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