【发布时间】:2013-09-26 19:29:40
【问题描述】:
我的目标是读取一个文件并将其内容存储在一个 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 函数在 C 中是如何工作的?" - 不,而是“sizeof 运算符在 C 中是如何工作的?”
-
在
c中,您不应该将 malloc 的返回值转换为(char *)。您可以毫无问题地将 void 指针分配给它。 -
@GavinH:这实际上是一件坏事,不仅仅是没有必要。
-
@EdS。同意 - 更新措辞