c++ 참조 메모리 delete시 에러 발생
글쓴이: joyrae / 작성시간: 목, 2015/03/05 - 5:06오후
참조 메모리 해제시 에러가 발생하는데, 왜 그런건지 궁금합니다.
아래 코드에서 SetMemory를 2번 호출 시 에러가 발생하는데 왜 그런지 잘 모르겠습니다.
본문 코드
m_pchMemory = NULL;
for( int pos = 0; pos < 2; ++pos )
SetMemory(m_pchMemory);
아래는 SetMemory 함수 ---------------------
SetMemory(char *&memory) {
if( memory != null ) delete[] memory; <-- delete 시 에러 발생
memory = NULL; memory = new char[150];
memory[0] = 5;
memory[1] = 5;
memory[2] = 5;
}
Forums:
'null'이 뭔가요? 실제 소스코드를 올리신거라면
'null'이 뭔가요?
실제 소스코드를 올리신거라면 NULL이 아닌 다른 값을 비교하고 계신거 같고,
실제 코드가 아니라 대충 여기에 적은 코드라면 실제 코드에 숨겨져 있을수 있는 실수를 찾을 수 없습니다.
몇가지 첨언하자면 C++에서는 NULL은 별로 의미가 없습니다.
C++의 NULL은 포인터 타입이 아닌 정수 0으로 정의됩니다.
C++11이상을 지원하는 환경이라면 nullptr을 사용하시는게 좋습니다.
그리고 delete 연산자를 사용할때 NULL 체크는 의미가 없습니다.
delete 연산자는 피연산자가 널 포인터일때 아무것도 하지 않습니다.
이렇게 되네요.
http://codepad.org/
C++ 선택
Output:
2
5 5 5
1
2
5 5 5
3
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기