C语言 如何在特定位置分配内存



这是针对C的。

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

是否可以让 malloc 不这样做并选择您希望在堆上分配内存的位置?

一般来说,有没有办法在堆上分配内存,让它不是下一个可用的地址,而是"更远"的地址?

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

谢谢杰里米

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

这样做仅用于临时调试目的,以便您可以调查程序的行为,同时找出问题所在。

此外,还有其他技术可用于分析不正确的内存访问,包括分析器,如valgrind和调试器"观察点"功能,这些功能会中断程序并在所选位置被修改时通知您。

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

大多数情况下,malloc的返回值取决于两件事:库正在使用的malloc版本(有很多)和分配的块的大小。

相关内容

  • 没有找到相关文章

最新更新