我将向您寻求一些帮助,该程序实现了搜索计划算法,非常非常简单。好吧,我遇到的问题对我来说有点奇怪:在为函数中本地声明的简单字符数组分配内存后,我处理了这个数组,它具有所有预期的行为并且一切正常,但是当我调用free() 函数在函数结束之前对该数组执行,程序停止并中止。如果有人对这个问题有一些经验(或没有......)可以帮助我,我会非常感激。好吧,这里遵循一些“模拟”代码来显示我在说什么(这不完全是写的,而是:
char* v_AllTheWorld
char* v_ReadALineOfTheWorld;
v_AllTheWorld = malloc(COLUMNS * LINES * sizeof(char)); /*LINES and COLUMNS are defined constants*/
if(v_AllTheWorld == NULL)
{
fprintf(stderr, "..."); //etc, etc.
exit(1);
}
v_ReadALineOfTheWorld = malloc(COLUMNS * sizeof(char)); /*the "sizeof(char)" looks useless, but there's no point in talking about that here, i guess.*/
if(v_ReadALineOfTheWorld == NULL)
{
fprintf(stderr, "..."); //etc, etc.
exit(1);
}
while(/*some_condition (number of lines to be read)*/)
{
//read data string from stream and stores in v_ReadALineOfTheWorld (fscanf);
//appends the read data to v_AllTheWorld (strncat);
}
free(v_ReadALineOfTheWorld);
/*The program is stopping right after this call in the debug.*/
return v_AllTheWorld;
我没有把函数的头部,它的声明,也没有详细表示流或数据是如何操作的,但是没有进行其他“malloc”或“free”的调用,所有的编写的代码是无条件执行的(在任何“如果”或类似的情况下)。当然,最后一个行为不包括分配测试,但你明白我的意思。
所以,好吧,我希望我这样做是正确的,我希望我以正确的方式详细说明了问题,我希望你能帮助我。
哦,我差点忘记了:你可能注意到了,这个程序是用 C 语言编写的。