2020년 7월 1일 수요일

shared ptr 이랑 그냥 pointer 랑 같이 쓰면 안됨

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

// 실험용.cpp : This file contains the 'main' function. Program execution begins and ends there.

//

#include "pch.h"

#include <iostream>

#include <guiddef.h>

#include <sstream>

#include <iomanip>

#include <Windows.h>

class boo1

{

public:

~boo1()

{

std::cout << "boo1 out\n" << std::endl;

}

public:

int lived;

};

class boo2

{

public:

~boo2() { std::cout << "boo2 out\n"; }

public:

std::shared_ptr<boo1> ex;

};

int main()

{

boo1* child = new boo1();

{

child->lived = 1;

boo2* parent = new boo2();

parent->ex = std::shared_ptr<boo1>(child);

delete parent;

}

std::cout << child->lived << std::endl;

}

child 소멸자를 호출한 적이 없는데 알아서 호출당해줌.

그 이유는 shared_ptr 의 count 는 개네들끼리 하는 것이기 때문임

그래서 child->lived 는 null 같은 값이 나옴

댓글 없음:

댓글 쓰기

List