C语言中如何防止内存覆盖
各位大侠.在编程中有如下问题:
1>我在一个char[12]里有一个字符数组,并初始化了,前面都是正确的.调试中发现在后面计算时把一个运算结果如 aa/100(aa是一个整形)赋给一个已声明浮点类型的浮点数时(即在等号的右边加上float类型转换符再给左边的浮点数,如果没有float类型转换则出来的是整除结果,小数点后面是0),出现前的的字符串后面加了一些莫名其妙的字符.
2>后面还有:为了防止发现这种情况,我把上面的同样的字符串拷入另一个备份的字符串.,在后面对另一个字符串去掉右空格时,调试中发现:随着循环的执行,备份的字符串后面也添加了一个不明字符,并随着循环的进行而不断变化.当然最后的结果也是不对的.
在后面加上"\0"好象也不中,查看内存地址,发现后面的内存地址再加上偏移量会覆盖掉前面的字符地址.
另外再说明一下:上述情况并不是每次都有的,象第一种情况,我在调另一个程序时,同样的代码,后面却不会出现乱字符.
请各位大侠指导一二,谢谢