数组溢出问题:
unsigned int k;
/*
//codes
*/
k=element.GetLength()-1;//返回值是unsigned int;
for(int i=0;i<k;++i)
cout<< element[element.GetLength()-1]<<endl;//输出最后一个
函数体里的局部变量,例如char Buf[10]一定要记得先给其附上初值。定义的时候最好这样定义 char Buf[10]={0},因为在release 版本下,编译器会优化我们的代码,不服初值有可能造成变量的值混乱。从而导致在debug下逻辑也正确,调试也正确,可一发布,就会造成想不到的意外。在做值的返回时,一定要注意你申请的空间的生命周期,返回一个临时变量就不好了......
unsigned int k;
/*
//codes
*/
k=element.GetLength()-1;//返回值是unsigned int;
for(int i=0;i<k;++i)
.......
其他代码
cout<< element[element.GetLength()-1]<<endl;//输出最后一个
如果element 为空,没有申请空间,那么GetLength()返回0; 那么elenment[-1]这会造成指向未知的内存空间,造成程序崩溃。
unsigned int 和Int 变量类型提升
隐藏的程序问题:k=-1;-1在计算机里表示:0xffffffff(unsigned int 值是42496729)。
for()循环中,int 遇到 usigned int ,提升为unsigned int ,所以for语句结果是for(i=0;i<42496729;++i)。
局部变量问题
函数体里的局部变量,例如char Buf[10]一定要记得先给其附上初值。定义的时候最好这样定义 char Buf[10]={0},因为在release 版本下,编译器会优化我们的代码,不服初值有可能造成变量的值混乱。从而导致在debug下逻辑也正确,调试也正确,可一发布,就会造成想不到的意外。在做值的返回时,一定要注意你申请的空间的生命周期,返回一个临时变量就不好了......