我希望预留一块内存(1GB)用于加载数据以进行分析。每个记录的大小约为10K字节,至少有100k条记录。最初我打算在c++代码中使用malloc,但是有人建议我不要这样做。
现在,使用char * block = new char[1000000000]是否需要额外的内存来存储数组中每个1,000,000,000个元素的指针?使用char * block = malloc(1000000000 * sizeof(char))创建时需要比new[]更少的额外内存吗?
我的目标是尽可能少地使用内存,并且不想在内存中打入和打出记录。
谢谢 :)
现在,使用char * block = new char[1000000000]是否需要额外的内存来存储数组中每个1,000,000,000个元素的指针?使用char * block = malloc(1000000000 * sizeof(char))创建时需要比new[]更少的额外内存吗?
我的目标是尽可能少地使用内存,并且不想在内存中打入和打出记录。
谢谢 :)
new
实际上是做什么的?如果告诉你它会结合调用malloc
来分配内存和调用构造函数来构建对象(如果后面一部分相关),你会感到惊讶吗? - Serge Ballestamalloc()
只是给你一块内存。new()
将实际运行一堆代码来为您提供一个对象,该对象将在内部执行malloc()
以向您提供与自己调用malloc相同的空间。 - Marc Bchar
的构造函数是什么? - Steve Summitstd::vector
和std::vector::reserve
或std::vector::resize
的原因是什么? - Daniel