这是针对C.
我认为malloc通常在最后一次分配后分配堆上的下一个可用空间。
是否有可能让malloc不这样做并选择堆上哪里你想要分配内存?
通常有没有办法在堆上分配内存并让它不是下一个可用的地址但是“更远”?
基本上,我的malloc'd空间+更多空间被覆盖(作为测试)所以我丢失了与malloc'd空间相关的元数据,因为它存储在malloc'd空间旁边(即使我使用不同的malloc调用)。
谢谢, 杰里米
答案 0 :(得分:2)
要暂时解决由malloc
分配的内存块的内存损坏,只需分配比通常需要的内存更多的内存,这样您的块就会更大。在程序受到不利影响之前,这将为他们提供更多的错误修改空间。
执行此 以进行临时调试,以便您可以在查明错误的同时调查程序的行为。
此外,还有其他技术可用于分析不正确的内存访问,包括分析程序,如valgrind和调试程序“watchpoint”功能,它们会中断程序并在选择的位置被修改时通知您。
答案 1 :(得分:0)
不,没有办法告诉malloc
您希望在堆上分配空间的位置。
大多数来自malloc
的返回值取决于两件事:您的库正在使用的malloc
版本(有很多)以及分配的块的大小。