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