关于new 与 malloc的一个问题

来源:互联网 发布:linux下配置环境变量 编辑:程序博客网 时间:2024/05/16 10:31
using namespace std;#include<iostream>int main(){ char str1[100]="abcdefg";char str2[10]="hijk"; int n=strlen(str1); strcpy(str1+n,str2);cout<<str1<<endl return 0;}

直接用数组定义才正确,下面这两种都不正确:

使用malloc手动分配内存

int main(){ char *str1=(char *)malloc(100*sizeof(char));char *str2=(char *)malloc(100*sizeof(char));str1="abcdefg";str2="hijk"; int n=strlen(str1); strcpy(str1,str2); //memcpy(str1,str2,1); cout<<str1<<endl; getchar(); return 0;}

使用指针,new分配内存

int main(){  char *str1=new char[100]; char *str2=new char[100];str1="abcdefg";str2="hijk"; int n=strlen(str1); strcpy(str1+n,str2); cout<<str1<<endl; return 0;}

不都分配了内存吗?怎么回出错

看下面的解决方法http://blog.csdn.net/daiyutage/article/details/8605580

然后我们知道了,原来对str1我们赋值字符串后,存放在了文字常量区,不可修改,出现错误!

0 0