完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个函数,它接收5个整数,并返回连接成一个字符串的5个整数,比如,23,34555,23,35变成“23:34:555:23:35”,函数被这样调用:char*var1=stringEmUp(34444,33,22,44)//这些整数是变化的变量)char*var2=35。字符串EmUp(34,4,33,33,45,44)char*var3=字符串Em*char*字符串EmUp(24414,33,33,22,94)char*字符串Em*字符串EmUp(int a1,24414,33,33,33,45,45,44)char*var*var*var*字符串Em(int a1,int a2,int a2,int a3,int a5){charsncharsn1[4];char snum1[4];charsn2[4];charsn2[4];charsn2[4];char[4];char sn[4];char[4];char[4][4];char[4][4];char itoa(snum4,a4,10);itoa(snum5,a5,10);char*buf=NULL;buf=malloc(sizeof(char)*30);snprintf(buf,30,“%s%s%s%s%s%s%s%s%s%s%s%s%”,snum1,“:”,snum3,“:”,snum4,“:”,free(buf);return buf;}我的问题是free()。最后一次调用……如果我不使用free()可以正常工作,但是我担心内存泄漏。我如何解决这个问题?
|
|
相关推荐
3个回答
|
|
而且它需要的堆要比可比较的全局数组变量大得多。当malloc返回NULL时,您该怎么做?
|
|
|
|
如果Caller函数提供一个本地缓冲区,那么它就在堆栈上,并且可能不使用任何额外的空间。
|
|
|
|
释放内存后不能使用内存。这就像登上一艘船,船已经不见了——你不上船,而是掉进水里。按照与您类似的安排,调用方随后必须释放缓冲区。通常,使用嵌入式系统时要尽量避免使用malloc()/free()。为什么?如果长时间运行,内存可能会耗尽或碎片整理,并且由于没有检查malloc()返回的值,系统将崩溃。这种情况下尤其如此,使用malloc()绝对没有好处。
|
|
|
|
只有小组成员才能发言,加入小组>>
5159 浏览 9 评论
1998 浏览 8 评论
1927 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3170 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2223 浏览 5 评论
724浏览 1评论
608浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
496浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
621浏览 0评论
520浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 04:31 , Processed in 2.014194 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号