我知道malloc()至少分配了所需的大小,因此它可以提供更多的大小。问题是,它将在相同架构中至少提供相同的内存大小吗?
例子:
int * myint = (int*)malloc(sizeof(int))
sizeof(myint) //---> this gives me 8
每次使用计算机都会给我8吗?
如果您不执行malloc
,它仍会给您8。因为它根本与malloc无关!
sizeof
是一个编译时常量,它告诉您存储参数类型实例的大小。参数的类型为,int *
并且您的编译器显然是为64位编译的,因此指针占用8个字节。
注意:在C ++中,sizeof
始终是编译时常量。在C语言中,对于可变长度数组有一种特殊情况,其中返回数组的实际运行时大小。但是C ++没有可变长度数组,因此您不必理会这种特殊情况。
另一个注意事项:在C ++中,您应该使用vector
和其他集合,并且如果所有其他集合都失败了(make_unique
不幸的是,没有失败)new
,但通常没有malloc
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句