首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++数组存储有关问题

2012-04-15 
C++数组存储问题例如:int array[10],在内存中是连续存储的,但是其长度信息在哪里存放着,当使用sizeof的时

C++数组存储问题
例如:int array[10],在内存中是连续存储的,但是其长度信息在哪里存放着,当使用sizeof的时候,sizeof是怎么知道array这个标识符是指向一个长度为10的int型数组的?

[解决办法]
应为数组分配是连续的,所以肯定有个东西记录其大小的,那个指针就在:开辟的数组的前面内存单元内,有个指针,表示其大小~~!
[解决办法]

探讨

那要是动态申请呢,例如:
int *p = new int[10];
那么删除它就要使用:
delete[] p;

delete[]又是怎样知道这个数组究竟有多大呢?不然它怎么知道要释放多少内存。

[解决办法]
7#mingliang1212跟我想的差不多
LZ可以在调试程序的时候查看memory
可以发现在这个数组的首地址前有一段空间是‘空’着的
这个‘空’着的大小根据编译器的不同而不同
这段空间就存储了数组的相应信息
[解决办法]
我在VS里测试,看到的块大小存储在指针所指位置前16个字节处,中间还有一些信息无从猜测意义。

存在栈里是不会保存数组大小信息的,就是堆里那个大小也不是给sizeof用的,而是给内存回收函数用的。

热点排行