해제하면 이제 저 프로세스에서 해당 메모리에 접근하는게 invalid댐 다른 프로세스가 쓰게될수도 잇는 free한 메모리가 되는 거. 저코드 프로세스에서 거기에 접근하려고 하면 그건 메모리 위반이라는거고 포인터는 단순히 주소값 밸류 가진 변수일 뿐이니깐 값자체는 안바뀜 - dc App
익명(27.1)2021-12-19 17:36
답글
cpp에서 raw pointer 할당 다룰일이 많이 없긴 하지만 c에선 프리해주고 포인터에 NULL 박는게 국룰이긴함 - dc App
익명(27.1)2021-12-19 17:37
답글
할당이나 해제는 운영체제의 메모리 관리에 끄이는 상태가 변햇다고 보셈 너 코드의 변수가 바뀌는게 아니라 - dc App
익명(27.1)2021-12-19 17:39
답글
값자체는 바뀌는게 아니라 메모리 자체가 다른곳에서 이용될 수 있도록 할당만 해제되는거군요!!! 감사합니다!
익명(175.213)2021-12-19 17:39
답글
*끄이는 -> 쓰이는 - dc App
익명(27.1)2021-12-19 17:39
답글
자세한 설명 감사합니다..!!!
익명(175.213)2021-12-19 17:39
답글
ㅇㅇ 해제하고 다시 참조해보셈 그게 메모리 버그임 - dc App
익명(27.1)2021-12-19 17:40
답글
더 깊게 알고싶으면 운영체제 공부하면 되는데 가볍게 읽을 수 있는게 OSTEP이라고 operating system: 3easy pieces 이거 보면 됨 - dc App
익명(27.1)2021-12-19 17:41
답글
책 얇으니 꼭 읽는거 추천 - dc App
익명(27.1)2021-12-19 17:42
답글
진짜 감사합니다 ㅠㅠ 꼭읽어볼게요
익명(175.213)2021-12-19 17:43
답글
열공! - dc App
익명(27.1)2021-12-19 17:44
위의 댓글에 대부분 동의하는데, 몇가지 추가적인 설명을 덧붙여봄. 1. new나 malloc으로 메모리 할당시 스탠다드 라이브러리에서 요청받은 사이즈의 메모리 포인터를 리턴하는데, 이미 그 전에 이 라이브러리가 가상 메모리 페이지와 물리메모리 페이지를 매핑을 하고, 그 가상 페이지안에 있는 포인터를 리턴해줌. 2. delete를 한다고 해당하는 가상 메모리 페이지가 해제 되는 것이 아님. (라이브러리 구현 방식에 따라 매핑 해제될 수도 있음). 3. 따라서, 여전히 그 포인터로 접근이 가능하고, 다른 프로세스는 해당하는 물리 메모리 페이지 사용 불가. 4. 매핑 해제시 포인터로 접근 불가능 (seg fault)이 되고, 다른 프로세스가 사용 가능.
해제하면 이제 저 프로세스에서 해당 메모리에 접근하는게 invalid댐 다른 프로세스가 쓰게될수도 잇는 free한 메모리가 되는 거. 저코드 프로세스에서 거기에 접근하려고 하면 그건 메모리 위반이라는거고 포인터는 단순히 주소값 밸류 가진 변수일 뿐이니깐 값자체는 안바뀜 - dc App
cpp에서 raw pointer 할당 다룰일이 많이 없긴 하지만 c에선 프리해주고 포인터에 NULL 박는게 국룰이긴함 - dc App
할당이나 해제는 운영체제의 메모리 관리에 끄이는 상태가 변햇다고 보셈 너 코드의 변수가 바뀌는게 아니라 - dc App
값자체는 바뀌는게 아니라 메모리 자체가 다른곳에서 이용될 수 있도록 할당만 해제되는거군요!!! 감사합니다!
*끄이는 -> 쓰이는 - dc App
자세한 설명 감사합니다..!!!
ㅇㅇ 해제하고 다시 참조해보셈 그게 메모리 버그임 - dc App
더 깊게 알고싶으면 운영체제 공부하면 되는데 가볍게 읽을 수 있는게 OSTEP이라고 operating system: 3easy pieces 이거 보면 됨 - dc App
책 얇으니 꼭 읽는거 추천 - dc App
진짜 감사합니다 ㅠㅠ 꼭읽어볼게요
열공! - dc App
위의 댓글에 대부분 동의하는데, 몇가지 추가적인 설명을 덧붙여봄. 1. new나 malloc으로 메모리 할당시 스탠다드 라이브러리에서 요청받은 사이즈의 메모리 포인터를 리턴하는데, 이미 그 전에 이 라이브러리가 가상 메모리 페이지와 물리메모리 페이지를 매핑을 하고, 그 가상 페이지안에 있는 포인터를 리턴해줌. 2. delete를 한다고 해당하는 가상 메모리 페이지가 해제 되는 것이 아님. (라이브러리 구현 방식에 따라 매핑 해제될 수도 있음). 3. 따라서, 여전히 그 포인터로 접근이 가능하고, 다른 프로세스는 해당하는 물리 메모리 페이지 사용 불가. 4. 매핑 해제시 포인터로 접근 불가능 (seg fault)이 되고, 다른 프로세스가 사용 가능.