以下代码块之间有什么区别:
#include<iostream>
using namespace std;
int main()
{
int *p;
float *q;
cout<<p<<"\n"<<q;
}
Run Code Online (Sandbox Code Playgroud)
而这段代码:
#include<iostream>
using namespace std;
int main()
{
int *p;
float *q;
p = new int;
q = new float;
cout<<p<<"\n"<<q;
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,指针都分配了一些内存吗?
那我为什么要使用new运算符呢?
不,int *p并float *p声明指针,但它们没有初始化,所以它们都指向内存中的随机地址.特别是,它们不指向分配给程序的内存空间.
第二段代码正确分配内存并在两个指针中存储该内存的地址.但请注意,您的代码永远不会取消分配内存,因此您会发生内存泄漏.您必须使用delete p并delete q在程序结束时避免这种情况.