利用编译器得知动态分配数组的大小

原创 2006年06月15日 17:10:00

每次在CSDN论坛C++板块闲逛,都会有很多收获,时常遇到一些精彩的回复。

    原帖地址http://community.csdn.net/Expert/topic/4822/4822941.xml?temp=.5199396中,摘录triace_zhang的回复如下:

    主要看编译器采用的策略。如果是vc6.0的话在动态分配的内存段前面16个字节会用一个cookie记录该内存段的大小,取这个cookie只要:

    int *p = new int[100];
    int i = *(int*)( (char*)p - 4 * sizeof( int ) );     //i就是内存段大小

    而有些其他编译器如dev c++采用映射map的形式,对于所有变量,用变量名为key,在map里对应每个变量名存贮变量大小。这种方法的话要找到映射map比较困难,暂时还没有什么好方法。

    另外:上述都是Project configurations设置为Debug的情况,如果为Release则无效。这个的原因,以我的水平就明白不了了。希望有高人能够解释一下。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++中二维数组的动态分配

  • 2013年04月19日 22:21
  • 2KB
  • 下载

简单动态分配一个数组

  • 2011年11月08日 17:13
  • 267B
  • 下载

C++队列之动态分配数组

1 、队列之定义  队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表          (1)允许删除的一端称为队头(Front)。   (2)允许插入的一端称为队...

二维数组动态分配

  • 2013年02月03日 21:00
  • 62KB
  • 下载

动态分配数组 C语言实现

  • 2009年03月21日 21:26
  • 507B
  • 下载

二维数组定义以及动态分配空间 (转)

二维数组定义以及动态分配空间 (转) 下面三种定义形式怎么理解?怎么动态分配空间?  (1)、int **Ptr;  (2)、int *Ptr[ 5 ]; 我更喜欢写成 ...
  • wxinghu
  • wxinghu
  • 2012年06月01日 09:57
  • 131

数组动态分配空间

  • 2013年05月02日 20:21
  • 3KB
  • 下载

【C++基础学习】二维数组的动态分配及参数传递

1. C语言动态分配二维数组 (1)已知第二维 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char *) * m); print...

C语言动态分配二维数组

  • 2013年04月06日 17:04
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用编译器得知动态分配数组的大小
举报原因:
原因补充:

(最多只允许输入30个字)