C++ new operator - 内存布局

Mar*_*ark 6 c++ memory oop

新运算符是否保证分配连续的堆内存?即

objects=new Base[1024];
Run Code Online (Sandbox Code Playgroud)

在内存分配方面一样

objects=(Base*)malloc(1024*sizeof(base));
Run Code Online (Sandbox Code Playgroud)

还是会有差距?

Luc*_*ore 8

是的,记忆将是连续的.在分配方面,它与malloc版本相同,但存在一些差异(对构造函数的调用,new不返回NULL,malloc不抛出异常等等).

请注意,你不能混淆new[],delete或者free你必须delete[] objects用来释放内存.