1 2 3 4 5 6 7 8 9 10 11 | class foo { // 여러 가지 행위들... }; int main() { foo* p = new foo; delete (void*)p; // 왜 문제가 될까? return 0; } | cs |
[C++] new 로 할당 받은 메모리를 ...
ssonacy(ssonacy)
2019-01-29 16:12
추천 1
댓글 14
다른 게시글
-
난 코딩얘기 안하고 이 얘기할거임 [2]익명(61.38) | 19.01.29추천 0
-
국비에서 추천해주는 기업들 괜찮은 곳임? [9]익명(27.175) | 19.01.29추천 0
-
소프트웨어 개발자가 꿈인데 편입을하는게 좋을까. [14]익명(121.182) | 19.01.29추천 1
-
고등학교 동아리에서 할만한 활동 추천좀 [9]익명(222.118) | 19.01.29추천 0
-
아니 비주얼베이직 왜이리 점유율 높냐? 뭐임 ㅋㅋㅋ [3]익명(211.197) | 19.01.29추천 0
-
테트리스 블록 순한글 이름 세계 최초 공개만남의광장(aerohong) | 19.01.29추천 0
-
C언어 정렬 공부 [7]ㄱㄱ(121.141) | 19.01.29추천 0
-
테트리스 for문까지ㅍ배우고 바로짰는데 ㅁㅌㅊ?? [1]익명(223.33) | 19.01.29추천 0
-
머신러닝 데이터싸이언스 취업이 힘든이유익명(124.197) | 19.01.29추천 0
-
항상 프로그램 설치할 때 공감되는 거 [3]나트륨찡(alphauri) | 19.01.29추천 1
저렇게하면 미정의행동일것같은데 foo의 소멸자가 호출되긴하나?
UB 맞고 소멸자 호출 안됨
예전에 Callback 함수가 void* 타입에 데이터를 넘기게 코딩 했는데.. 그때 경험이 생각나서
맞아, 소멸자가 호출이 안되는게 가장 큰 문제얌~ ㅎ
저러면 foo 지울 때 스택에 foo 크기도 모르는데, 0바이트 릴리즈하겟다는 거임 저건..foo를 선언해줘야 운영체제에서 foo크기만큼 릴리즈함. c11님 말대로 소멸자도 호출안되는 문제도 있구..
저건 숏코딩이라서 한눈에 들어오는데, 프로그램 크기가 커지면 조금은 헷갈릴수도...
저렇게 릴리즈 계속 하면 운영체제에 0바이트만 릴리즈돼서 계속 foo 찌꺼기 쌓임 저거 많이 쓰면 운영체제 다운됨
OS가 왜 다운됨 ??ㅎㅎ
운영체제에 new로 등록해서 할당 공간 받았는데 delete 0바이트만 릴리즈하니 찌꺼기 계속 쌓여서 운영체제 다운됨 내가 저런 거 예전에 많이 해봐서 앎..
네..
생각해 보니까.. 메모리 단편화에 대해서 애기 하는듯 ?
저 코드가 문제는 메모리 릭은 안생긴다는 거지~ 물론 내 컴파일러에서만
저런 거 엄청 자주 쓰여서 계속 쌓이면 운영체제 다운됨..
C는 임의의 타입에 대해 일하는 함수 만드려면 void 포인터 이용하는 수밖에 없어서 짜증나는 듯..