你好,这是我的问题

FILE *sourcefile;

if ((sourcefile = fopen(argv[1],"r")) == NULL)  //Opens File
{
    printf("Error: Could not open %s\n",argv[1]);
    return 0;
}

fseek(sourcefile, 0 , SEEK_END);  // Sets file pointer at the end of the file
unsigned int fSize = ftell(sourcefile); // Determines file size by the position of file pointer
fseek(sourcefile, 0 , SEEK_SET); // Sets file pointer at the start of the file

char *buffer = (char *) malloc(fSize);

if (buffer == NULL)
{
    printf("Error: Not enough system memory\n");
    return 0;
}

printf("%d\n",sizeof(buffer));
printf("%d\n",fSile);

fread (buffer,1,fSize,sourcefile);
fclose (sourcefile);

我的代码只是打开一个文件并将其内容加载到内存中。问题是,当我使用
char *buffer = (char *) malloc(fSize)

它只分配4个字节
而不是文件的完整大小(即,用一个小句子打开一个简单的txt时为25字节)。当我在最后打印bufferfSize的大小时,分别得到4和25,因此fSize是正确的。知道为什么会这样吗?
谢谢,

最佳答案

sizeof(buffer)在32位平台上应为4字节。它是指向malloc分配的缓冲区的指针。无法查询缓冲区的大小。

10-08 18:08