内存分配未成功,却使用了它
内存分配未成功,却使用了它。 编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。
常用解决办法是, 在使用内存之前检查指针是否为 NULL。
如果指针 p 是函数的参数,那么在函数的入口 处用 assert(p!=NULL)进行检查。
如果是用 malloc 或 new 来申请内存,应该用 if(p==NULL) 或 if(p!=NULL)进行防错处理。
1 #include <iostream> 2 #include <string.h> 3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 4 using namespace std; 5 int main(int argc, char** argv) { 6 //拷贝字符串常量到字符数组 7 char string[80] = "Fill the string with something"; 8 cout<<"string:"<<string<<endl; 9 cout<<"strcpy:"<<endl; 10 char *p=strcpy(string,"abc"); 11 cout<<"p :"<<p<<endl; 12 cout<<"string:"<<string<<endl; 13 char str[80]; 14 cout<<"str:"; 15 cin>>str; 16 p=strcpy(string,str); 17 cout<<"p :"<<p<<endl; 18 cout<<"string:"<<string<<endl; 19 20 //拷贝前5个字符到string中 21 cout<<"str:"; 22 cin>>str; 23 cout<<"strncpy:"<<endl; 24 p=strncpy(string,str,strlen(str)); 25 cout<<"p :"<<p<<endl; 26 cout<<"string:"<<string<<endl; 27 return 0; 28 }