ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面试题:如何用malloc申请64位对齐的地址

2021-10-19 23:32:50  阅读:388  来源: 互联网

标签:面试题 字节 申请 malloc 地址 64 ptr 指针


大致的要求是你可以使用malloc来申请内存,并使用free来释放内存,然后你所使用的malloc能申请出来的地址是16位对齐的,也就是说你的malloc申请出来的地址值能被2(16位=2字节)整除
现在要求你能申请并释放64位对齐的空间,也就是说你返回的指针需要指向一个能被8(64位=8字节)整除的地址,并且从这个地址往后还有与你申请空间等大的空间
当时这个问题答了一半,从面试官那里得到的方案大致是先申请空间然后返回一个偏移了的地址,然后利用多申请的空间来存储偏移量
我个人的想法是,先申请8+size的空间(8表示8字节=64位,size为要申请的空间字节数),然后根据malloc返回的指针ptr的地址值来决定如何返回地址值,比如说ptr的值为8N+2,那么就准备返回ptr+6,而若ptr的值为8N,那么就准备返回ptr+8。在这种构造方式下,被返回的指针的前面2字节必然是安全可用的,就可以用这2个字节的空间存一下指针的偏移量,在释放这种特殊的指针时,往前查2个字节就可以找到指针偏移量,从而定位到真正的内存起始位置,并调用free释放这段内存

标签:面试题,字节,申请,malloc,地址,64,ptr,指针
来源: https://blog.csdn.net/qq_34193444/article/details/120856869

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有