我读过堆栈和堆
但我不知道这个

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/

10-12 16:16