所以我的任务是为非常简单服务器实现加载功能。我无法弄清楚我的分段错误在哪里。我曾尝试使用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 !!
答案 0 :(得分:2)
*content = buffert;
VS。
free(buffert);
BYTE** content
指向已取消分配的内存。你可能希望只要buffert
存活就保持这些数据存活,然后再解除分配。
另外,您可能打算写length += BYTES
,因为您已经将整个文件读取为一次。 (另外,while(true)
是不需要的)