我的目标是读取文件并将其内容存储在char数组中,并给定要读取的偏移量和字节数。我写了一个相同的功能,它工作正常。malloc函数如何在C中工作?
现在这个函数是从别的地方调用的。所以我试图声明一个变量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
我不理解这种行为。有人可以请我解释一下。
非常感谢
shahensha
“malloc函数如何在C中工作?” - 不,“运营商的规模如何在C工作?” – 2013-09-26 19:31:27
[只有返回的指针才能获取malloc的大小](http://stackoverflow.com/questions/12131925/getting-the-size-of-a-malloc-only-with-the-returned-指针) – 2013-09-26 19:32:04
在'c'中,你不应该把malloc的返回值转换为'(char *)'。您可以毫无问题地将void指针指定给它。 –