PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
Re: [问题] 大约一半机率会内存错误的字串处理函式
楼主:
deo2000
(800IM)
2016-10-06 13:47:12
感谢各位建议
目前修改过以后,还是会有3成机会在某一行出错
如果程式很久才跑一次就正常,密集重复执行就比较可能会出错。
程式码
http://pastebin.com/BRZNwk0Q
只要出错就是固定在 while 的第2行, realloc 那边
错误讯息: free(): invalid next size (normal): 0x000000000076d7e0
作者:
stupid0319
(征女友)
2016-10-06 13:57:00
帮你改了一下
http://pastebin.com/ngyVCidE
作者:
pttworld
(批踢踢世界)
2016-10-06 13:59:00
realloc的参数和回传值可以尝试不同变量。
作者:
x000032001
(版废了该走了)
2016-10-06 14:56:00
其他地方没有非法存取吗..这heap被写爆了我指的是 有可能其他地方写坏 只是这里刚好free才爆炸
作者:
LPH66
(-6.2598534e+18f)
2016-10-06 21:39:00
strncpy 在你给的大小到达时“不会”把结尾的'\0'写进去不像 strncat 是会帮你加 '\0' 结尾的因此 strncpy 那行制造了一个没有结束的字串, 问题应该在这如果你真的确定你计算的空间是足够的, 那可以不需要 n 版直接用普通的 strcpy / strcat 即可
作者:
stupid0319
(征女友)
2016-10-07 01:27:00
如果是大约固定长度字串,没必要用calloc来申请空间或者申请一次空间就好,不要一直calloc一直free
作者:
dragon0414
(天草)
2016-10-14 14:33:00
有先确保realloc要到的空间有被清为0吗? 如果有残值,在操作strncpy & strncat时可能会有意料外的行为
继续阅读
[问题] 大约一半机率会内存错误的字串处理函式
deo2000
[问题] C++ name mangling问题
w0005151
[问题] c++ 印符号
jason0606
[讨论] 关于读入档案做后续处理
jacky1989
[问题] 建.lib档出现"Unable to start program"
psylove5566
[问题] 如果 feof()==1 还需要fclose吗?(已补码)
deo2000
[问题] 小于10 指定长度的各种组合
mikemagic88
[问题] VS2012+OpenCV3.1+CUDA7.5
schizophrena
[问题] vsc++ clickonce更新软件问题
MOONY135
[问题] vfork() + exec() 相关疑问
kyuudonut
Links
booklink
Contact Us: admin [ a t ] ucptt.com