tim*_*miz 2 c++ pointers vector heap-memory stack-memory
我写了一些代码,试图在Free store(堆内存)上创建一个指针。我认为这是不可能的,但无论如何我都尽力了。
下面的代码基本上是在堆上创建一个指针向量,然后使向量中的那些指针指向堆上的一些整数。我想知道向量中称为vec的那些指针是否在堆上?我还想知道在使用这样的向量时释放分配的空间的正确方法是什么。最后一条delete语句使程序崩溃,因此我将其注释掉。我不知道是否有内存泄漏。
vector<int*> *vec = new vector<int*>();
vec->push_back(new int(1));
vec->push_back(new int(2));
vec->push_back(new int(3));
cout << (*vec)[0] << " " << (*(*(vec))[0]) << endl;
cout << (*vec)[1] << " " << (*(*(vec))[1]) << endl;
cout << (*vec)[2] << " " << (*(*(vec))[2]) << endl;
delete (*vec)[0];
delete (*vec)[1];
delete (*vec)[2];
//delete [] vec;
Run Code Online (Sandbox Code Playgroud)
可以在堆中创建任何变量,包括指针。就是说,在C ++级别,您无法控制在何处创建内存。