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申请了动态字符指针,a指向了它.

再执行这句: a="jdgkfdgkfgj";
第一你要明白 "jdgkfdgkfgj"是常量字符串,它在常量区,a指向了它的首地址.

最后: delete []a; 是会发生错误的.

而且会发生内存泄露.

要赋值,要用 strcpy 这个函数.

strcpy( a, "jdgkfdgkfgj" );

同上哦! “jdgkfdgkfgj" 已经被储存在了 栈区,
a="jdgkfdgkfgj";
你这句话的意思是改变 指针a所指向的位置, 而不是将那些字符串储存在了 为a分配的数据空间当中,
你要释放 栈区的空间 当然会错误了。
只有堆区的空间才是我们来 申请 和释放的。
栈区是系统来负责的
strcpy( a, "jdgkfdgkfgj" );

char*是指针,当然要释放咯~~

deliwb 说得对。

你怎么乱写啊!