C++ char*问题
来源:百度知道 编辑:UC知道 时间:2024/06/05 17:50:37
int main()
{
char *a=new char[100];
a="jdgkfdgkfgj";
delete []a;
return 0;
}
这样有什么问题?
char*要如何delete?
那么strcpy()这个函数究竟做了什么?
它是如何复制的?
{
char *a=new char[100];
a="jdgkfdgkfgj";
delete []a;
return 0;
}
这样有什么问题?
char*要如何delete?
那么strcpy()这个函数究竟做了什么?
它是如何复制的?
这个程序是错误的
首先 char *a=new char[100];
a申请了动态字符指针,a指向了它.
再执行这句: a="jdgkfdgkfgj";
第一你要明白 "jdgkfdgkfgj"是常量字符串,它在常量区,a指向了它的首地址.
最后: delete []a; 是会发生错误的.
而且会发生内存泄露.
要赋值,要用 strcpy 这个函数.
strcpy( a, "jdgkfdgkfgj" );
同上哦! “jdgkfdgkfgj" 已经被储存在了 栈区,
a="jdgkfdgkfgj";
你这句话的意思是改变 指针a所指向的位置, 而不是将那些字符串储存在了 为a分配的数据空间当中,
你要释放 栈区的空间 当然会错误了。
只有堆区的空间才是我们来 申请 和释放的。
栈区是系统来负责的
strcpy( a, "jdgkfdgkfgj" );
char*是指针,当然要释放咯~~
deliwb 说得对。
你怎么乱写啊!