我读过堆栈和堆
但我不知道这个
x(在堆中还是在堆栈中)在哪里?
我的代码是否有内存泄漏?
struct st
{
int x;
int* y;
};
st* stp;
void func()
{
st* s=new st();
s->x=2;
s->y=new int(5);
stp=s;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
func();
cout << stp->x << " " << *stp->y <<endl;
delete stp->y;
delete stp;
}
输出
2 5
最佳答案
stp
是动态分配的,因此在堆上。* 因此,它的所有成员(包括 x
)都在堆上。
据我所知,您没有内存泄漏。
* 从技术上讲,C++ 标准不讨论堆栈与堆,因此分配内容取决于编译器。但在实践中,它会存储在类似堆的结构中。
关于c++ - new(堆或堆栈)创建的结构字段在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8325380/