C++初学者,关于new操作符的问题.

来源:百度知道 编辑:UC知道 时间:2024/07/03 03:25:11
比如:
char *p=new char;
cin>>p;
cout<<p<<endl;

我输入了一个字符串,运行时就能输出一个字符串.

不过char *p=new char不是只开辟了一个字符的空间吗?为什么输入进去一个字符串,系统不报错呢?

还有一种形式是:
char *p=new char[10];
它和前者有什么区别?

char *p=new char;
cin>>p;
cout<<p<<endl;
这里new的作用只是给这个指针一个合法的值,实际上这样造成了内存泄漏的;cin>>p;这里只是使用指针p指向了缓冲区的一地址,记录用户输入,然后cout将输入输出。用户的输入没有被变量保存起来。

char *p=new char[10]; 或 char p[10];
是分配堆/栈空间来保存用户输入的,可以在程序后面使用。

我觉得这个和编译器有关的。