写了一个很简单的程序如下: void sp_set() { SCON=0X50; TMOD=0X20; TCON=0X40; TH1=0XFD; TI=1; TR1=1; } void main() { char a[7]={'a','b','c','d','e','f','\0'}; char *p=NULL; p=(char*)malloc(10*sizeof(char)); memset(p,'k',3*sizeof(char)); sp_set(); //串口设置 if(1==TI) {if(NULL!=p) printf("code:%s\n",p); else printf("code:%s\n",a); } }
为什么分给p的内存和数组a重合了呢???
输出结果也是数组a的前三个元素被memset()函数的赋值给覆盖了 为什么会这样啊? |