21xrx.com
2024-09-19 10:07:26 Thursday
登录
文章检索 我的文章 写文章
如何计算 C++ 中 new 出来的空间大小?
2023-07-07 19:46:21 深夜i     --     --
C++ new 空间大小 计算

在 C++ 中,使用 new 运算符可以在程序运行时动态地分配内存空间,使用 delete 可以释放这些空间。但是,如果我们想知道 new 出来的空间大小,该怎么办呢?下面简单介绍两种方法。

1. sizeof 运算符方法

在 C++ 中,sizeof 运算符可以计算数据类型或对象所占用的空间大小。因此,我们只需要使用 sizeof 运算符来计算 new 出来的空间大小即可。例如,我们定义了一个指向 int 类型的指针 p,并且使用 new 运算符在堆上分配了 10 个 int 类型的空间,则可以使用下面的代码来计算所分配的空间大小:


int* p = new int[10]; // 分配 10 个 int 类型的空间

size_t size = sizeof(int) * 10; // 使用 sizeof 运算符计算分配的空间大小

其中,size_t 表示无符号整型,sizeof(int) 表示 int 类型所占用的空间大小。

2. _msize 函数方法

在 Windows 平台上,我们可以使用 _msize 函数来获取 new 出来的空间大小。该函数是 C/C++ 运行库提供的一个内存管理函数,定义在 malloc.h 或者 Crtdbg.h 中。例如,如果我们定义了一个指向 int 类型的指针 p,并且使用 new 运算符在堆上分配了 10 个 int 类型的空间,则可以使用下面的代码来计算所分配的空间大小:


#include <malloc.h>

int* p = new int[10]; // 分配 10 个 int 类型的空间

size_t size = _msize(p); // 使用 _msize 函数计算分配的空间大小

其中,size_t 同上,_msize 函数的参数为分配的空间的首地址,即指针 p。

总结

在 C++ 中,我们可以使用 sizeof 运算符或者 _msize 函数来计算 new 出来的空间大小。sizeof 运算符用于通用的平台和编译器,而 _msize 函数则适用于 Windows 平台上的编译器。无论使用哪种方法,都可以帮助我们更好地了解程序运行时的内存使用情况,从而更好地进行优化和调试。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复