跟随我的上一篇文章,我还有一个烦人的 bug 不会消失。
bash
我在Linux下为该命令写了一个模拟器。
当我使用以下命令在一次运行中运行代码时:
ls Debug/ | grep r
ls >> file.jer & ls & ls & ls &
ls >> file.jer
ls > file1.rrr
ls & ls | grep e
ls & ls & ls &
ls Debug/ | grep r
ls Debug/ > k.out
ls Debug/ >> k.out
exit
ls >> file.jer
然后程序在第三行写入ls: cannot access : No such file or directory
.当我运行程序时,每次运行我都会点击输入分别地然后给出正确的输出。我尝试调试了很多次,但找不到问题所在。
具体问题:当我运行代码并点击 时ls Debug/ | grep r
,会显示正确的输出。接下来,当我点击 时ls >> file.jer & ls & ls & ls &
,这里的代码也运行得很好。但是当我点击 时ls >> file.jer
,发生了一些非常错误的事情,我似乎找不到它的来源,命令的输出又3rd
是
没有这样的文件或目录,但显然这是错误的,因为当我在一次运行中运行它时,该文件file.jer
会附加当前路径的内容。
我有一个main
, 和两个.h
文件及其两个.c
文件。
答案1
问题解决了!
该错误的原因是我将一个char**
变量发送到一个更改该变量的函数中,然后free
将该变量放回到 main 中。这是不允许的,因此我需要发送一个char***
,然后一切就解决了。
谢谢大家。