[问题] new一个新物件会当掉(更新抓到问题)

楼主: HateAnus (讨厌从后面来)   2018-04-16 23:45:01
开发平台(Platform): (Ex: Win10, Linux, ...)
Dev cpp
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
TDM-GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
//
作者: djshen (djshen)   2018-04-16 23:49:00
13行确定会跳出?
作者: crazycy (LCY)   2018-04-16 23:54:00
delete?喔 没事 当我没说
作者: djshen (djshen)   2018-04-16 23:58:00
code不详细错误讯息也不详细不如掷筊你可以用debugger
作者: flyfoxy (飞狐)   2018-04-17 00:00:00
sInput[i+1]越界,当下没当,而是当在后面奇怪的地方
作者: asilzheng (asil)   2018-04-17 00:33:00
与一楼有相同的疑问,觉得13行没跳出造成Str1违规存取
作者: shadow0326 (非议)   2018-04-17 00:46:00
就是sInput[i+1]的锅吧
作者: asilzheng (asil)   2018-04-17 01:54:00
Str100的型别是什么?我猜是char[100],而且Str1没给结束字符,造成strcpy复制过多而出错
作者: ilikekotomi (Young)   2018-04-17 01:57:00
全部code传github比较有帮助 这样才知道Str100做什么
作者: asilzheng (asil)   2018-04-17 01:57:00
这段程式有多处会造成违规存取,没修好死在奇怪的地方都不意外猜测13行的检查在没有空白的时候,会越过结束字符,循环停不下来且造成内存破坏,刚好结束循环后是new,才误以为是new出问题
作者: joe820730 (Let it go)   2018-04-17 09:22:00
这没把完整程式码上传跟掷筊差不多...
作者: hunandy14 (Charlott.HonG)   2018-04-17 14:36:00
实际上被你隐藏起来的地方是有关连的如果真的要隐藏,可以开一个单档最小化重现bug把你觉得重要的地方砍一砍保留会错误的部分砍到最简
作者: Neisseria (Neisseria)   2018-04-17 16:33:00
这时候就要拿 http://sscce.org/ 出来
作者: rbufghj9713 (我只是来潜水)   2018-04-18 01:02:00
struct的你有做typedef吗?不知道没做会不会有问题
作者: djshen (djshen)   2018-04-18 01:08:00
strcpy要copy到哪去?我知道你想干嘛 但你知道你要copy去哪?
作者: loveflames (咕啾咕啾魔法阵)   2018-04-18 13:29:00
就是因为这个才当机
作者: djshen (djshen)   2018-04-18 13:38:00
你觉得char*会指到哪里
作者: hunandy14 (Charlott.HonG)   2018-04-18 17:08:00
64行补 tk->tokenStr = new char[strlen(temp)];更正 还要+1, 这样应该可以理解了吧QuQ 自己找地方del行数我有砍到 是78
作者: ilikekotomi (Young)   2018-04-18 21:20:00
因为CharPtr没有分配空间 所以才会当机
作者: joe820730 (Let it go)   2018-04-19 21:33:00
char array在编译期就配好内存,当然不会出错而char pointer如果你没有new或malloc一个空间给它,你根本不知道它会指到哪,当机也就理所当然了
作者: dzwei (Cout<< *p << \n ;)   2018-04-21 03:31:00

Links booklink

Contact Us: admin [ a t ] ucptt.com