+ -
当前位置:首页 → 问答吧 → 动态分配内存的问题

动态分配内存的问题

时间:2011-12-07

来源:互联网

目的就是建立各长度为len的int型数组,不懂new int[len*sizeof(int)]中sizeof(int)的作用,要不要sizeof有区别吗?

作者: hrhy256   发布时间: 2011-12-07

int* pInt = new int[len]; 这样就可以了。

如果是new int[len*sizeof(int)].在32位系统下,就是new int[4*len]。

作者: icechenbing   发布时间: 2011-12-07

估计你是跟malloc搞混了?

int* pInt = (int*)malloc(len * sizeof(int));

作者: icechenbing   发布时间: 2011-12-07

有区别:
sizeof(int)一般不等于1,
所以
len*sizeof(int)也不等于len

作者: flydreamGG   发布时间: 2011-12-07

C/C++ code
int* pInt = new int[len]; 这个保险
new int[len*sizeof(int)]  系统不一样 就不一样

作者: yuegeman   发布时间: 2011-12-07

引用 2 楼 icechenbing 的回复:

估计你是跟malloc搞混了?

int* pInt = (int*)malloc(len * sizeof(int));
++1

作者: chaoplusplus   发布时间: 2011-12-07

new和malloc的动态开辟都是以字节为单位的,对于char或unsigned char型,它本身就是是一个字节,那么动态开辟的时候乘不乘sizeof(char)都一样,因为sizeof(char)=1
如果是int就不一样了,sizeof(int)=4
时刻牢记new和malloc是以字节为单位。

作者: wumuzi520   发布时间: 2011-12-07