【问题标题】:Is it safe to use _msize with new[]?将 _msize 与 new[] 一起使用是否安全?
【发布时间】:2012-07-26 02:29:46
【问题描述】:

将 Microsoft 特定的 _msize() 函数与 new [] 一起使用是否安全?

例子:

  int* i = new int[100];      
  size_t s = _msize(i);    
  cout << "Size of the array in bytes: " << s << endl;
  delete [] i;

MSDN 只描述了 malloc & Co. 的用法。

我已经使用 Visual Studio 2010 测试了代码,它看起来可以工作!但是我想知道是否有一些预期的问题或任何特殊情况?

【问题讨论】:

    标签: c++ c visual-studio-2010 visual-c++ mfc


    【解决方案1】:

    当且仅当operator new[]malloc &amp; Co. 实现时才会正确

    【讨论】:

      【解决方案2】:

      如果有人为您的类型覆盖 operator new,则可能会出现问题。

      写起来很简单

      const size_t s = 100;
      int* i = new int[s];
      

      或者,如果你真的写 C++

      std::vector<int>   i(100);
      

      【讨论】:

        【解决方案3】:

        _msize 函数返回内存块的大小(以字节为单位) 通过调用 calloc、malloc 或 realloc 分配。

        所以如果operator new 是由malloc() 实现的,它就会起作用。否则,或者如果operator new 被覆盖,您将遇到麻烦。

        【讨论】:

          猜你喜欢
          • 2021-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-13
          • 2012-10-21
          • 2021-11-07
          • 2011-12-04
          • 1970-01-01
          相关资源
          最近更新 更多