我的目标是读取文件并将其内容存储在给定偏移量和要读取的字节数的 char 数组中。我已经编写了一个函数来执行相同的操作,并且运行良好。
现在这个函数将从其他地方调用。所以我试图声明一个变量 char * data
来保存上述函数返回的内容。声明后我试着给它分配一些内存。 (我知道多少,因为我指定了要读取的字节数)。它是这样的:
char * data;
char * filename = "alphabet.txt";
int data_size = 10;
printf("data size: %d\n", data_size);
data = (char*) malloc (data_size);
printf("Size allocated to data: %d\n",sizeof(data));
return 0;
此代码提供以下输出:
data size: 10
Size allocated to data: 8
我不明白这种行为。谁能给我解释一下。
非常感谢
杀个杀
最佳答案
这与malloc
无关。
sizeof
在编译时执行它的操作,而不是运行时。 sizeof(data)
与 sizeof(char*)
相同。您的程序无法在编译时知道该指针引用了多少内存。
另一方面,sizeof(some_array)
将按您预期的方式工作,因为数组大小在编译时已知。
关于c - malloc 函数在 C 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19037019/