我在此代码段中使用malloc错误吗

时间:2018-12-16 18:09:28

标签: c list malloc user-input sizeof

我试图理解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个输入停止。

1 个答案:

答案 0 :(得分:2)

您的代码没有错。但是,您的理解是错误的:sizeof(some_pointer)总是返回指针的大小,而不是所指向的内存块的大小。指针中没有内存块大小信息。