我正在尝试创建一个指向6
元素int
在函数中稍后返回它,因此为此目的我使用malloc
,但它的表现似乎并不符合我的预期。这是代码:
int j = 0;
for (;j < 5; j++) {
int * intBig = malloc(j * sizeof(int));
printf("sizeof intBig - %ld\n", sizeof(intBig));
}
打印相同的数字8
字节为sizeof(intBig)
在每次迭代时。而我期待一系列4, 8, 12, 16
。在这种情况下我缺少什么?
这是因为您要打印的大小int *
。这样的指针总是具有相同的大小。sizeof
是一个编译器构造。它无法知道仅在运行时发生的事情,例如动态内存分配。会不会是这样的
int intBig[100];
然后你会得到数组的大小(以字节为单位),因为编译器知道它有多大。但结果是sizeof
运算符始终是一个编译时常量,因此您所拥有的不可能产生其他任何结果。
此外,你那里有内存泄漏,因为你不是free
- 再次唤起你的记忆。
1 可变长度数组 (VLA) 是一个例外,但此处未使用它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)