new 运算符是否保证分配连续的堆内存块? IE。是
objects=new Base[1024];
在内存分配方面与
objects=(Base*)malloc(1024*sizeof(base));
还是可以有差距?
最佳答案
是的,内存会是连续的。在分配方面,它与 malloc
版本相同,但有几个区别(调用构造函数,new
不返回 NULL
, malloc
不会抛出异常等`).
请注意,您不能将 new[]
与 delete
或 free
混淆,您必须使用 delete[]对象
释放内存。
关于C++ new 运算符——内存布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445365/