最近修改公司产品底层driver一个bug,在查询生成一种图形报表时,底层c-driver报错.通过debug追踪到执行
(char *) realloc(instr, length + (sizeof(char)* (num * 5)))
这句时出的错,很是纳闷,反向追踪发现程序有的地方在调用上述函数时,传递给参数instr的指针变量是静态分配的变量,如:
char tmpStr[4096]; 这样定义的tmpStr变量将被固定了大小空间,是不允许再重新分配空间大小的,传递给instr时,使用realloc重新给该变量分配内存空间时必然出错.
realloc函数只能给通过malloc函数获取空间的变量重新分配空间,即:
char *tmpStr=(char *)malloc(4096*sizeof(char));
此时变量tmpStr才能允许使用 realloc重新分配空间.