所以我想我会通过实验证明我的观点:
#define NUM_VALUES 10000int main(int argc,char** argv){ int i = 0; while (true) { std::cout << i << "|"; double* d = new double[NUM_VALUES]; std::cout << ((voID*)d) << std::endl; for (int j = 0; j < NUM_VALUES; j++) d[j] = j; delete d; i++; } return 0;}
不仅内存使用量不增长,而且每次都将d分配到同一个地方! (Visual Studio 2010).这是visual studio编译器的怪癖吗?或者这是标准的一部分?
解决方法 如果您使用new,则需要使用delete如果你使用new []你必须使用delete []
他们的意思不同. double * d = new double();意味着分配和构造一个double类型.删除d;表示未分配并破坏单个双重类型. double * d = new double [NUM_VALUES];表示分配NUM_VALUES个双精度数并删除[] d表示未分配的每个NUM_VALUES双精度分配.
总结以上是内存溢出为你收集整理的c – 删除和删除[]等效于基本数据类型全部内容,希望文章能够帮你解决c – 删除和删除[]等效于基本数据类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)