Oru*_*ner 0 c++ pointers memory-leaks
我遇到了一件我无法解释的奇怪事情.默认情况下,指针成员不会初始化为零(仅在第二次发生).我知道我忘了在构造函数中初始化它并在d-tor中释放内存.但我无法解释为什么默认情况下指针未初始化为零.下面是WORKS的伪代码.我发布它是为了向你们展示我的意思.在我的真实代码中,它要复杂得多.
到目前为止我的猜测是某处存在内存泄漏.如果有更多可能性,我想听听你的意见.谢谢.
#include <iostream>
class A {
public:
int *p;
A () {std::cout << "p in ctor: " << p << std::endl;}
~A() {}
void f(int *i) { p = i;}
};
int main() {
A *a = new A();
int c = 0;
a->f(&c);
std::cout << "p in step 1:" << a->p << std::endl;
delete a;
A *b = new A();
std::cout << "p in step 2:" << a->p << std::endl;//here works but not in real code
}
Run Code Online (Sandbox Code Playgroud)
But I cannot explain why the pointer is not initialized to a zero by default.
- 这就是C++的工作原理.它没有初始化为任何东西.通过省略初始化部分,您明确声明您不希望它被初始化.
归档时间: |
|
查看次数: |
152 次 |
最近记录: |