생성자
A a2;
int main() {
A a1;
cout << a1.getP() << endl; // 32767 ( 초기화되지 않은 쓰레기 값 )
cout << a2.getP() << endl; // 0 ( 초기화 된 값 )
return 0;
전역변수는 생성자 만들면 초기화 해서 나오고,
지역변수는 생성자 만들면 초기화 안 되어서 나옴.
#include <iostream>
using namespace std;
class Kvector{
int *m;
public:
Kvector(int sz = 0){
cout << this << " : Kvector(int) called \n";
if (sz > 0) m = new int[sz];
else m = NULL;
}
~Kvector(){
cout << this << " : ~Kvector() called \n";
delete[] m; // 여기가 메모리 누수 방지하는 부분!
}
int *getM() {
return m;
}
};
Kvector v2(2);
int main() {
Kvector v1;
cout << v1.getM() << endl;
cout << v2.getM() << endl;
return 0;
}
결과
0x407030 : Kvector(int) called // v2가 먼저 할당
0x61fe08 : Kvector(int) called // v1 할당
0
0x10917a0 ( 2개의 배열만큼 할당해서 그 주소 출력 )
0x61fe08 : ~Kvector() called // v1 반납
0x407030 : ~Kvector() called // v2 반납
'TIL > [C++ 프로그래밍} TIL' 카테고리의 다른 글
TIL 22.06.08 (시험에 나올만한..?) (0) | 2022.06.09 |
---|---|
TIL (22.06.07) ( * , & 관련 ) (0) | 2022.06.08 |
TIL (22.05.30) (0) | 2022.05.30 |
TIL (22.05.25) (0) | 2022.05.25 |
TIL (22.05.23) (0) | 2022.05.23 |