C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 删除和删除[]等效于基本数据类型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以在代码审查期间,我的一位同事使用了double * d = new double [foo];然后调用删除d.我告诉他们应该改变它以删除[] d.他们表示编译器不需要基本数据类型.我不同意.

所以我想我会通过实验证明我的观点:

#define NUM_VALUES 10000
int main(int argc,char** argv)
{
  int i = 0;
  while @R_607_6334@
  {
    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 – 删除和删除[]等效于基本数据类型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。