【发布时间】:2019-05-17 05:18:31
【问题描述】:
我试图理解 malloc,所以我创建了这个小东西,以显示整数的大小,以及 malloc 给出的新大小,但它并没有增加;对我来说总是 8 个字节
那么,我使用 malloc 是不是错了?
#include <stdio.h>
#include <stdlib.h>
int main() {
int *points = (int *) malloc(10*sizeof(int));
int size_of_points = sizeof(points);
int size_of_int = sizeof(int);
printf("size of int: %d\n", size_of_int);
printf("size of points: %d\n\n", size_of_points);
for ( int counter = 0; counter < size_of_points; counter++) {
printf("Please enter: ");
scanf("%d", points);
printf("**New size of int: %d\n**", size_of_int);
printf("New size of points: %d\n\n**", size_of_points);
}
free(points);
return 0;
}
在任何时候,点的大小都不应该是:sizeof(int) 是 8 乘以 10 = 40? 它以 8 个输入停止。
【问题讨论】:
-
没有。它是指针的大小。还有为什么
size_of_points应该改变?您应该阅读 C 的基础知识。 -
请注意,循环不会更改
size_of_int或size_of_points。您将指向分配数组的第零个元素的指针传递给scanf(),它会用您键入的任何整数覆盖变量(假设您键入一个整数);你永远不会改变分配的内存量。 -
好吧,我知道了,但理论上如果我想以点为单位存储超过 8 个输入,我是否必须使用缓冲区而不是 malloc,点 [200] 还是重新分配更好,所以每次没有空间时,如果需要,添加一个额外的空间
标签: c list malloc user-input sizeof