如何在特定位置分配内存

时间:2013-09-24 17:20:29

标签: c memory memory-management malloc

这是针对C.

我认为malloc通常在最后一次分配后分配堆上的下一个可用空间。

是否有可能让malloc不这样做并选择堆上哪里你想要分配内存?

通常有没有办法在堆上分配内存并让它不是下一个可用的地址但是“更远”?

基本上,我的malloc'd空间+更多空间被覆盖(作为测试)所以我丢失了与malloc'd空间相关的元数据,因为它存储在malloc'd空间旁边(即使我使用不同的malloc调用)。

谢谢, 杰里米

2 个答案:

答案 0 :(得分:2)

要暂时解决由malloc分配的内存块的内存损坏,只需分配比通常需要的内存更多的内存,这样您的块就会更大。在程序受到不利影响之前,这将为他们提供更多的错误修改空间。

执行此 以进行临时调试,以便您可以在查明错误的同时调查程序的行为。

此外,还有其他技术可用于分析不正确的内存访问,包括分析程序,如valgrind和调试程序“watchpoint”功能,它们会中断程序并在选择的位置被修改时通知您。

答案 1 :(得分:0)

不,没有办法告诉malloc您希望在堆上分配空间的位置。

大多数来自malloc的返回值取决于两件事:您的库正在使用的malloc版本(有很多)以及分配的块的大小。