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

原创 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则无效。这个的原因,以我的水平就明白不了了。希望有高人能够解释一下。

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

相关文章推荐

数组的动态分配

一、一维数组的动态分配一维数组动态分配形式如下:int n=2; int *a = new int[n]; //动态分配的数组a存放在内存中的堆中 //使用完后要手动释放内存,否则会内存泄漏 del...

编译器delete [] 时如何知道数组长度

如何申请和释放一个数组 为什么 newdelete new delete 要配对使用 如何申请和释放一个数组?我们经常要用到动态分配一个数组,也许是这样的:string *psa = new stri...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

C++动态分配数组

《C++教程》郑莉、李宁,人民邮电出版社,2010年第一版

用malloc动态分配二维数组

C语言提供类似于矩阵的多维数组,在一些进行数学运算的程序中会经常用到。从形式 上看多维数组是由多个一维数组组成的,但C语言处理多维数组的方法和一维数组一样,都是线性存储,连续分配存储空间,可以用带偏移...

用malloc动态分配二维数组

C语言提供类似于矩阵的多维数组,在一些进行数学运算的程序中会经常用到。从形式 上看多维数组是由多个一维数组组成的,但C语言处理多维数组的方法和一维数组一样,都是线性存储,连续分配存储空间,可以用带偏移...

用malloc动态分配二维数组

转自:http://blog.csdn.net/fqc0306/article/details/6686673 C语言提供类似于矩阵的多维数组,在一些进行数学运算的程序中会经常用到。...

利用动态内存分配创建一个二维数组

刚刚学习C/C++的时候,这个问题一直困扰这我,但是随着学习的深入,我渐渐

gcc编译器小知识

q:gcc的全称是什么: a: gcc 是 gnu compiler collecti 编译器套装),它不仅仅只是编译c语言的编译器,它提供了对c、面向对象的c(object c), c++, jav...

【动态规划】分配小组

第四题 分配小组(poset.pas/c/cpp)   【问题描述】 有N个Mars人想要进行一项活动。他们需要分成几个小组,每个人属于其中一个小组。Mars人从出生起每个人就有一个印记,这个印...

二维数组的动态分配

在Robert Sedgewick所著的Algorithm In C中,把二维数组当成数组的数组为它动态分配内存。     首先,分配一个指针的数组,然后为每一行分配内存。 函数定义:     ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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