关于 realloc函数问题

本文介绍了一个在修改公司产品底层driver时遇到的realloc函数使用错误案例。详细解释了realloc函数的正确使用方法,即只能用于通过malloc函数分配的内存,并不能用于静态分配的内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近修改公司产品底层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重新分配空间.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值