一个int数组内存初始化的讨论

 

在C++ primer中,有很多关于new int[10]等语言的描述和例子。 如8.4.3中:

 

int * pia = new int[104];

 

pia是一个指向1024的int类型的数组的指针,而这个数组中,所有的数据都是没有被初始化过的。

然而,我的例子程序显示,整个数组时被初始化过的,莫非是编译器相关?

 

 

我的输出结果是:


ewuming@cnshc0032 []: g++ -o a.out array.cc
ewuming@cnshc0032 []: ./a.out
array value: 1074592164
array value: 1074588840
array value: -1073748456
array value: 134515377
array value: 1073834604
arr value: 0        arr address: 0x804a008
arr new value: 0    arr address: 0x804a008
arr value: 0        arr address: 0x804a010
arr new value: 0    arr address: 0x804a010
arr value: 0        arr address: 0x804a018
arr new value: 0    arr address: 0x804a018
arr value: 0        arr address: 0x804a020
arr new value: 0    arr address: 0x804a020
arr value: 0        arr address: 0x804a028
arr new value: 0    arr address: 0x804a028
arr value: 0        arr address: 0x804a030
arr new value: 0    arr address: 0x804a030
arr value: 0        arr address: 0x804a038
arr new value: 0    arr address: 0x804a038
arr value: 0        arr address: 0x804a040
arr new value: 0    arr address: 0x804a040
arr value: 0        arr address: 0x804a048
arr new value: 0    arr address: 0x804a048
arr value: 0        arr address: 0x804a050
arr new value: 0    arr address: 0x804a050
*** glibc detected *** free(): invalid pointer: 0x0804a030 ***
ewuming@cnshc0032 []: which g++
/usr/bin/g++
ewuming@cnshc0032 []: which g++
ewuming@cnshc0032 []: g++ -v
Reading specs from /usr/lib/gcc-lib/i586-suse-linux/3.3.3/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada --disable-checking --libdir=/usr/lib --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i586-suse-linux
Thread model: posix
gcc version 3.3.3 (SuSE Linux)

 

 

在使用传统c语言的编程方法(int array[5];)中,这个是可以理解的,普通的数组都是没有被初始化过的。

在使用C++语言的编程方法(int* arr = new int[10];)中,我觉得应该是所有数据都是被初始化过的。

这样,为什么Lippman在书中专门如此提到呢?

 

纳闷中。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值