如何使用malloc在C中初始化char数组?

时间:2020-10-21 07:59:56

标签: c char malloc sizeof

我尝试使用malloc分配一个char数组,但大小始终为“ 8”:

char *d = malloc(2356 << 1);
printf("size of *d: %d\n", sizeof(d));

output: size of *d: 8

char *d = malloc(2356 * sizeof(*d);
printf("size of *d: %d\n", sizeof(d));

output: size of *d: 8

char *d = malloc(2356 * sizeof(char));
printf("size of *d: %d\n", sizeof(d));

size of *d: 8

请帮助我,我的代码有什么问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

您无法使用sizeof()方法找到malloc分配的内存大小。但是,相反,有一些特定于操作系统的功能可用于查找分配的大小。

如果您在Windows中,则可以在_msize()头文件中使用malloc.h函数。它将返回字节大小。

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int main(){
    char *d = malloc(2356 << 1);
    printf("size of *d: %d\n", _msize(d));
    //size of *d: 4712

    char *e = malloc(2356 * sizeof(*e));
    printf("size of *d: %d\n", _msize(e));
    //size of *d: 2356

    char *f = malloc(2356 * sizeof(char));
    printf("size of *d: %d\n", _msize(f));
    //size of *d: 2356
    return 0;
}

您可以在以下线程中找到有关其他特定于操作系统的功能的更多信息:Determine size of dynamically allocated memory in C