我试图理解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个输入停止。
答案 0 :(得分:2)
您的代码没有错。但是,您的理解是错误的:sizeof(some_pointer)
总是返回指针的大小,而不是所指向的内存块的大小。指针中没有内存块大小信息。