【发布时间】:2026-01-27 16:50:01
【问题描述】:
我知道这可能很愚蠢,但我不明白为什么在我使用 malloc 为汽车分配内存后,汽车大小为 8。我输入到 carsAmount 的大小无关紧要,请帮忙。 当我在分配它之前检查数组大小时 - 它是 8。 我试图释放它,但出现错误。 我尝试使用 realloc-didnt 工作。
这是我的代码 sn-p:
int* cars = NULL;
int carsAmount;
printf("Enter cars amount:\n");
scanf("%d",&carsAmount);
cars = realloc(cars, (carsAmount)*sizeof(int));
【问题讨论】:
-
也试过这个:cars = malloc(carsAmount*sizeof(int));
-
相同尺寸是什么意思?你知道
sizeof(cars)会返回指针的大小而不是数组的大小吗? -
当你说“cars size is 8”时,你是用
sizeof(cars)来检查的吗?cars是一个指针,你系统上一个指针的大小是 8 个字节。sizeof没有告诉您分配了多少元素。您必须自己跟踪。 -
我使用 sizeof(cars)/sizeof(int) 检查了数组返回值是 2 中有多少元素,
-
好的,所以如果你单独检查它们,我想你会发现
sizeof(cars)是8(指针大小),sizeof(int)是4(整数大小)。所以这就是为什么你会得到 2。虽然答案相同 - 它没有告诉你已经分配了多少。
标签: c arrays linux ubuntu dynamic-memory-allocation