私は説明できない奇妙なことに出くわしました。ポインター メンバーは、既定ではゼロに初期化されません (2 回目にのみ発生します)。コンストラクターで初期化し、d-tor でメモリを解放するのを忘れていたことはわかっています。しかし、デフォルトでポインターがゼロに初期化されない理由を説明できません。以下は動作する疑似コードです。私が何を意味するかを皆さんに示すために投稿しました。私の実際のコードでは、はるかに複雑です。
これまでのところ、どこかにメモリリークがあると思います。また可能性があれば教えていただきたいです。ありがとう。
#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
}