莫名其妙的程序问题原因

⌚Time: 2024-11-04 18:23:00

👨‍💻Author: Jack Ge

程序的错误有编译时的错误和运行时的错误。编译时的错误,只要足够熟悉编程,解决起来没有什么困难的。困难的,就是运行时错误。

运行时的错误,就是软件达不到想要的状态,执行不了应有的功能,程序出现意外情况,是代码程序设计的缺陷和错误,逻辑错误,这种原因需要从代码里找问题。

还有一种,是莫名其妙的错误。这种莫名其妙的问题并不是程序和编程的人水平和逻辑问题。可能是犯了一些其他的低级错误导致的。最后发现问题了,突然感觉只是粗心了而已。

我有时候会遇到特殊的情况。就是程序运行时发生异常,但是找代码原因,没有任何问题。很奇怪。

最后非要检查数据,数值。发现了不对的地方。就是粗心大意,把变量名字写错了。把数据写错了。

今天发现了一个问题,在游戏程序里面刷怪。等到把所有刷的怪物都杀死了。结果还是不能前进。检查怪物列表发现有没有杀死的怪物。最后发现是怪物的创建地点写错了数值,粗心把4写成了1。导致那几个怪物就不能被看到也不能被杀死。

在程序运行过程出现某个功能有时候好使,有时候不好使。这让人头疼。按理说程序是准确执行的,不像电线接触一会好坏。程序应该只会一直好使或者一直不好使。

但是有时候确实会导致这种情况,就是野指针内存的不确定性,比如提前释放内存。某个字符串提前释放了,之后又用到它,就会出现有时候好用有时候不好用的问题


gchar* directory_path = get_path();
...
g_free(directory_path);
...
function(directory_path);

因为调用释放函数的时候,看似释放了,可能并没有清空对应内存空间的数据,导致下次使用依旧能够读取到里面的内容。而有时候系统确实清空了这段内存数据,下次使用就直接崩溃。