4

将 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 测试了代码,它看起来可以工作!但我想知道是否有一些预期的问题或任何特殊情况?

4

3 回答 3

4

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

写起来很容易

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

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

std::vector<int>   i(100);
于 2012-07-27T12:04:00.883 回答
3

当且仅当operator new[]通过malloc & Co.

于 2012-07-27T12:03:21.243 回答
3

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

因此,如果operator new由 实现malloc(),它将起作用。否则,或者如果operator new被覆盖,您将遇到麻烦。

于 2012-07-27T12:05:20.447 回答