现有一个程序需要申请的地址是要求起始地址必须是16的倍数,如何设计(C++面试题)?
这是我看到的一道面试题,不知道怎么下手?希望前辈可以指导一下,蟹蟹!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
这是我看到的一道面试题,不知道怎么下手?希望前辈可以指导一下,蟹蟹!!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
pragma pack(16)
不行,这个pragma pack编译时的指令,影响的是编译器如何安排全局变量、局部变量,不会影响C库函数malloc的行为的。既然是申请内存,肯定是malloc之类的堆内存。
可以malloc一大块内存,自己维护一个内存池。
应该是地址操作的问题
我不太明白你的题目的意思?你要申请的空间是变量空间吧?如果是这样,我觉得是这样:
用new申请空间?我感觉是new一个变量空间并用指针接受该地址,然后取指针所存的地址,判断地址是否为16的倍数,若不是就delete它,若是就保留。
自己封装malloc、free,分配时,多分配align个空间,然后取对其后的地址返回,返回地址前一个字节保存offset,free时根据offset,做真实的free。
我能想到的思路是这样的
::operator new
和::operator delete
的重载