在运行成程序上有时会发现函数内部的值与返回到主函数的值会相差很多出现随机值,但是它们的地址却相同!**一般的原因多是内存污染,多发于函数返回数组地址**或返回主函数后直接应用。
例如下面的两个程序,不用关心它做了什么,只需观察它们的不同点(已注释)
#include <stdio.h>
#include <ctype.h>
int *count_e(char *str);
int main(){
char str[] = {
"abc,cba,def"};
int *a,i;
a = count_e(str);
puts("\n");
for(i=0;i<5;i++){
printf(" a[%d] = %d ; &a = %p;\n",i,a[i],&a[i]);
}
free(a);
return 0;
}
int *count_e(char *str){
if(str == NULL)
return NULL;
int ls[5] = {
0}; //关键!!!内存污染问题!
int i,k,t;
i = k = t = 0;
while