【发布时间】:2021-02-04 02:33:37
【问题描述】:
我尝试使用 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
请帮帮我,我的代码有什么问题?
谢谢!
【问题讨论】:
-
d不是字符数组,它是指向字符的指针。当您像这样使用 malloc 分配内存时,d是指向该分配数组中第一项的指针。 -
8 是系统上指针的大小
-
我认为 C 编译器无法找到 malloc 分配的内存大小。虽然,有一些扩展可以告诉你分配数组的大小。更多信息在这里:stackoverflow.com/questions/1281686/…
-
您需要自己跟踪尺寸。