当前位置: 首页 > news >正文

linux下内存地址数学运算

如下代码计算地址并16字节对齐:

    char* buffer = (char*)malloc(a3 + 0x1000);unsigned long long tmp = (((unsigned long long)buffer + 0x10) & 0xffffffffffffff00);char* buf = (char*)tmp;

假如把地址当作整数,加减程序运算,直接转换是不行的,gcc会提示各种错误:

error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]

恼人的地方在于,无论你怎么改,除非将buffer 类型改为uintptr_t,或者unsigned long,其他类型都无效!

唯一可行、有效的方法如下:

    char* buffer = (char*)malloc(a3 + 0x1000);uintptr_t tmp = ((( uintptr_t )buffer + 0x10) & 0xffffffffffffff00);char* buf = (char*)tmp;

相关文章:

  • HTTP状态码有哪些常见的类型?
  • 搭建 Spark - Local 模式:开启数据处理之旅
  • 推荐一个简单又好用的在线视频编辑工具,在线免费使用,便捷高效!
  • ​​批发商商城小程序制作哪家强?开启高效批发新模式!
  • Python爬虫从入门到实战详细版教程Char01:爬虫基础与核心技术
  • 在 master 分支上进行了 commit 但还没有 push,怎么安全地切到新分支并保留这些更改
  • STL常用算法——C++
  • Unity 跳转资源商店,并打开特定应用
  • C# 事件知识文档
  • Vue2 el-checkbox 虚拟滚动解决多选框全选卡顿问题 - 高性能处理大数据量选项列表
  • 如何给文件增加拓展名
  • 1️⃣5️⃣three.js_GUI辅助调试器
  • Qt进阶开发:鼠标及键盘事件
  • AOSP Android14 Launcher3——RectFSpringAnim窗口动画类详解
  • ComfyUI+Sonic实战,三步实现图片开口说话
  • 单个或批量实现-提取PDF文档中的合同号和姓名并按“合同号_姓名”格式重命名文件。
  • 【文献分享】Model-based evaluation提供了数据和代码
  • day48—双指针-通过删除字母匹配到字典最长单词(LeetCode-524)
  • rk3568main.cc解析
  • 多路转接select服务器
  • 国家医保局副局长颜清辉调任人社部副部长
  • 央行4月开展12000亿元买断式逆回购操作
  • 山西太原小区爆炸事故已造成17人受伤
  • 辽宁辽阳市白塔区一饭店发生火灾,当地已启动应急响应机制
  • 国泰海通合并后首份业绩报告出炉:一季度净利润增逾391%
  • 工行一季度净赚841亿元降3.99%,营收降3.22%