malloc()非确定性行为

达力克至尊

我知道malloc()至少分配了所需的大小,因此它可以提供更多的大小。问题是,它将在相同架构中至少提供相同的内存大小吗?

例子:

int * myint = (int*)malloc(sizeof(int))
sizeof(myint)  //---> this gives me 8

每次使用计算机都会给我8吗?

扬·胡德克(Jan Hudec)

如果您不执行malloc,它仍会给您8。因为它根本与malloc无关!

sizeof是一个编译时常量,它告诉您存储参数类型实例的大小。参数的类型为,int *并且您的编译器显然是为64位编译的,因此指针占用8个字节。

注意:在C ++中,sizeof始终是编译时常量。在C语言中,对于可变长度数组有一种特殊情况,其中返回数组的实际运行时大小。但是C ++没有可变长度数组,因此您不必理会这种特殊情况。

另一个注意事项:在C ++中,您应该使用vector和其他集合,并且如果所有其他集合都失败了(make_unique不幸的是,没有失败new,但通常没有malloc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章