不,没有保证.根据N1570,7.22.3内存管理功能:
通过连续调用aligned_alloc,calloc,malloc和realloc函数分配的存储的顺序和连续性未指定.
无论如何,您有两种选择:
如果我是你,我肯定会相信现有的功能,因为现代的实现非常聪明.
根据ISO/IEC 9899:201x -> 7.22.3
通过连续调用aligned_alloc、calloc、malloc 和realloc 函数分配的存储的顺序和连续性未指定。
一个好的内存管理器将能够在一定程度上解决这个问题。然而,还有其他方面,例如数据对齐[1],会导致内部碎片。
如果您依赖内置内存管理,您可以做什么?
使用带有内存检查选项的探查器(例如 valgrind)来查找使用后未释放的内存。例子:
valgrind --leak-check=yes myprog arg1 arg2
Run Code Online (Sandbox Code Playgroud)遵循良好做法。示例 - 在 C++ 中,如果您希望其他人从您的多态类继承,您可以将其析构函数声明为 virtual。
使用智能指针。
笔记:
如果您要使用自己的内存管理系统,您可以考虑Boehm-Demers-Weiser垃圾收集器。
Valgrind仪器框架。