文件IO上的分段错误

时间:2016-02-08 10:59:07

标签: c file-io segmentation-fault server

所以我的任务是为非常简单服务器实现加载功能。我无法弄清楚我的分段错误在哪里。我曾尝试使用GDB,但由于我使用telnet发送http标头作为输入,因此我很难从中获取任何结果。

功能:

 //Loads a file into memory dynamically allocated on heap.
 //Stores address thereof in *content and length thereof in *length.

bool load(FILE* file, BYTE** content, size_t* length)
{
    //checks so file is open
    if(file == NULL)
    {
        return false;
    } 

    char* buffert = malloc(BYTES * sizeof(char));

    while(true)
    {

        // read into buffert
        fread(buffert, BYTES, sizeof(char), file);

        //store the pointer of this buffert in content
        *content = buffert;

        //update length
        length += 1;

        // checks for eof
        if(feof(file) != 0)
        {
            break;
        }
    }

   free(buffert);

   return true;
}

" ... BYTE,我们确实将其定义为8位字符。"

THX !!

1 个答案:

答案 0 :(得分:2)

  *content = buffert;

VS。

   free(buffert);

BYTE** content指向已取消分配的内存。你可能希望只要buffert存活就保持这些数据存活,然后再解除分配。

另外,您可能打算写length += BYTES,因为您已经将整个文件读取为一次。 (另外,while(true)是不需要的)