我在这段代码中使用 malloc 错误吗
Am I using malloc wrong in this snippet
我试图理解 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 个输入停止。
您的代码没有任何问题。然而,错误的是您的理解:sizeof(some_pointer)
总是 return 指针的大小,而不是指向的内存块的大小。指针中没有内存块大小信息。
我试图理解 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 个输入停止。
您的代码没有任何问题。然而,错误的是您的理解:sizeof(some_pointer)
总是 return 指针的大小,而不是指向的内存块的大小。指针中没有内存块大小信息。