h*****n 发帖数: 209 | 1 比如说一个C程序内有很多int型的变量,还有一些int 或 char的数组,
有时候我发现这些变量的内存地址有可能和这些数组的地址混在一起了,这样就导致了
一些莫名其妙的bug。
不知道这是由于compiler的问题,还是程序本身没设计好。
我想版上的高手应该也经历过类似的问题。那么如何预防这种bug呢? |
X****r 发帖数: 3557 | 2 一般来说,程序里定义的变量,包括数组,各有不同的地址,是不会混淆的。
你说的“数组”大概是指指针吧。一旦使用指针,自然有可能指向错误的地方。
【在 h*****n 的大作中提到】 : 比如说一个C程序内有很多int型的变量,还有一些int 或 char的数组, : 有时候我发现这些变量的内存地址有可能和这些数组的地址混在一起了,这样就导致了 : 一些莫名其妙的bug。 : 不知道这是由于compiler的问题,还是程序本身没设计好。 : 我想版上的高手应该也经历过类似的问题。那么如何预防这种bug呢?
|
b******n 发帖数: 592 | 3 越界这种情况,可以用valgrind. 变量名字起的有关一些,可以避免很多这样的问题。
这些都是程序的问题,compiler不会给你制造这种麻烦的。
【在 h*****n 的大作中提到】 : 比如说一个C程序内有很多int型的变量,还有一些int 或 char的数组, : 有时候我发现这些变量的内存地址有可能和这些数组的地址混在一起了,这样就导致了 : 一些莫名其妙的bug。 : 不知道这是由于compiler的问题,还是程序本身没设计好。 : 我想版上的高手应该也经历过类似的问题。那么如何预防这种bug呢?
|
h*****n 发帖数: 209 | 4 多谢。
这样的问题确实都是由越界引起的,应该是程序的问题。
【在 b******n 的大作中提到】 : 越界这种情况,可以用valgrind. 变量名字起的有关一些,可以避免很多这样的问题。 : 这些都是程序的问题,compiler不会给你制造这种麻烦的。
|
c**b 发帖数: 2999 | 5 变量名字尽量用具体的,比如userName. c里面难度大的是指针,数组,函数.
【在 h*****n 的大作中提到】 : 比如说一个C程序内有很多int型的变量,还有一些int 或 char的数组, : 有时候我发现这些变量的内存地址有可能和这些数组的地址混在一起了,这样就导致了 : 一些莫名其妙的bug。 : 不知道这是由于compiler的问题,还是程序本身没设计好。 : 我想版上的高手应该也经历过类似的问题。那么如何预防这种bug呢?
|
c**b 发帖数: 2999 | 6 可能有时候给string赋值的时候,要把最后一个手动赋值为"\0'.
【在 h*****n 的大作中提到】 : 比如说一个C程序内有很多int型的变量,还有一些int 或 char的数组, : 有时候我发现这些变量的内存地址有可能和这些数组的地址混在一起了,这样就导致了 : 一些莫名其妙的bug。 : 不知道这是由于compiler的问题,还是程序本身没设计好。 : 我想版上的高手应该也经历过类似的问题。那么如何预防这种bug呢?
|