Item* item2 = new Item(어쩌리저쩌리);
이런 형식인 경우 0초기화가 일어나는데 막는 방법 없나
어셈에서 보면__autoclassinit 호출 되면서 객체 크기만큼 0 초기화 해버림
그런데 이게 new 재정의 할때 파라미터를 size 하나만 두면 이런 일이 일어나고
size 외에 다른게 추가되면 호출 안됨
왜 그러는 거임?
Item* item2 = new Item(어쩌리저쩌리);
이런 형식인 경우 0초기화가 일어나는데 막는 방법 없나
어셈에서 보면__autoclassinit 호출 되면서 객체 크기만큼 0 초기화 해버림
그런데 이게 new 재정의 할때 파라미터를 size 하나만 두면 이런 일이 일어나고
size 외에 다른게 추가되면 호출 안됨
왜 그러는 거임?
Item* item2 = reinterpret_cast<Item>(malloc(sizeof(Item)));
생성자가 필요하긴 하니까 그런거야 malloc ㄴㄴ 해
경험해본적 없어. 그런데 여기 설명되어 있어.
http://blogs.microsoft.com/cybertrust/2012/03/08/guarding-against-uninitialized-class-member-pointers/
/sdl 옵션 없애래
싫어 범용적으로 누가 써도 문제 없어야해
잘 읽어보면 다른 해법도 있어.
property 로 선언해서 쓰면 속을듯. ㅋㄷ
일단 현재는 new 재정의 할때 흔히 디버깅할때 쓰는 __FILE__ __LINE__ 을 추가로 인자로 받아서 하고 있어
어셈에서 보니까 사용안하는 파라미터라 함수 호출전에 stack 에 넣지도 않도록 최적화 해주더라구 아얘 없는거 취급. 그런데 사용자 환경따라 다르지 않을까 싶어
귀찮으면 default parameter 로 만들어 그럼.