根据这里所写,new
在 free store 中分配内存而 malloc
使用 heap,这两个术语通常指的是相同的东西。
根据这里所写,realloc
可能会将内存块移动到新位置。如果 free store 和 heap 是两个不同的内存空间,那么会有问题吗?
具体而言,我想知道是否可以安全地使用它。
int* data = new int[3];
// ...
int* mydata = (int*)realloc(data,6*sizeof(int));
如果不行,那么有没有其他安全地重新分配使用new
分配的内存的方法?我可以分配新的空间并使用memcpy
复制内容,但据我所知,realloc
可能会在可能的情况下使用相同的区域。
malloc
分配200 MB内存需要多长时间(几微秒),而使用std::vector
则需要多长时间(约200毫秒!)。std::vector
并不是解决所有内存问题的万能解决方案。 - David Haimint *n = new int [200 * 1024 * 1024] {};
在MSVC上的表现大致相同。 - Oberonreserve
不会将字节清零。你可能混淆了reserve
和resize
。” - Oberon