经验五中用到malloc()函数,我就不得不说一说它了.我在此不得不提醒大家一下:malloc()函数不是你想象中那么好用的.
在此,我就说一下本人在用malloc()函数遇到的麻烦.代码的形式大概如下:
#include<stdio.h>
#include<conio.h>
int main(void)
{
...
char **pointer=NULL;
char string[2]={1,2};
char string1[3]={1,2,3};
char string2[4]={1,2,3,4};
...
pointer=(char**)malloc(sizeof(char*)*3);
pointer[0]=string;
pointer[1]=string1;
pointer[2]=string2;
...
...
}
以上代码只是说明,我当时编写的模块的大概情况.
当时我在编译的时侯,没有报错或者警告.但是,当我在运行程序,来验证程序是否健康时.
有时出现正常,有时出现不正常(如:程序死亡/在有些情况出WINDOWS报错).然后,我再以出错的输入数据,
按照程序的顺序往下一步一步看,没有发现什么异常.然后,又回到模块的开头重新查找,还是没有找到原因所在.
我连续找了好几遍,最终没有找到.
过了大概二三天的时间,我再次回到这个模块,试图找到原因.找了几遍还是落了个空.我就想把这个模块单独拿出来运行一下.
当我在写头文件包含(#include<>)的时侯,突然间想起来自己以前有过相似的遭遇.
大家可以想一下,问题到底出在那儿...
哦,原来是没有写#include<malloc.h>啊.malloc()函数不是默认的编译器连接为什么要写呢.
大家可以去查一下malloc()是不是只在malloc.h头文件中声明的...
因此,为了保证程序的健康,在以上给出的代码中在头文件包含中写上#include<malloc.h>,就可以了.
而在我的那个模块中extern void *malloc(unsigned);声明它是一个外部函数.因为工程中的其它文件中已经#include<malloc.h>,
所以在这个模块就需要声明一下就可以了.