C++ 에서 메모리에 설정과 삭제에 대한 질문입니다.
글쓴이: kknd345 / 작성시간: 수, 2005/10/05 - 9:58오후
지금 하고자 하는 걸 예를 들어 설명할게요
일단 현재까지 한것은
단순하게 표현하면
int * a = new int[1000]; 이라고 했을때
다른 포인트 배열 int* p_a[10]을 잡아서
p_a[0]=a;
p_a[1]=a+99;
p_a[2]=a+222;
p_a[3]=a+311;
p_a[4]=a+446;
p_a[5]=a+560;
p_a[6]=a+600;
p_a[7]=a+710;
p_a[8]=a+890;
p_a[9]=a+920;
이렇게 선언을 했습니다.( 포인터 배열이 잡히는 주소는 규칙성은 없습니다.)
이제부터 제가 하고싶은게 나오는데요..
전 저기서 p_a[6]가 가리키는 영역의 크기를 재조정하고 싶거든요. 재조정하고 싶은 크기의 배열을 생성해 기존의 데이터를 새 배열에 옮기고 기존의 배열을 지우면 될거 같은데...
다른 크기의 배열을 생성하고 데이터를 옮기는 건 안 어려운데... 지우는게 어렵네요.
p_a[6]에 해당하는 배열만 지우고 싶은데...
delete [] p_a[6] 이렇게 하면 되나요?
전 안되는것 처럼 보이는데...(아님 제 소스코드가 잘못 됐거나요..) 혹시 p_a[6]만 지우는 방법 없을까요?
Forums:
동적메모리로 잡은것(new)은 delete로 할당 해제가 가능하지만
동적메모리로 잡은것(new)은 delete로 할당 해제가 가능하지만
stack에 잡히는 정적 배열은 맘대로 지울수가 없습니다.
p_a[1]=&a[99];
와 같은 표현은
p_a[1]=a + 99; 로 표현할수 있습니다.
근데 일부러 이렇게 표현하신건가요?
greedy 알고리즘
아~ 실수했군요. kooya님 글 보고 글 수정했습니다.가
아~ 실수했군요. kooya님 글 보고 글 수정했습니다.
가장 간단하게 말씀드리자면요
위처럼 int * a = new int[1000];
한다음에 p_a[6]을 a 범위에 지정했잖아요.
그뒤 delete [] p_a[6]를 하게 되면
a+600 ~ a+ 710 까지만 메모리가 해제 되나요?
제가 그거 때문에 삽 퍼는거 같아서요 ㅜㅜ...
p_a[6]=a+600;
p_a[7]=a+710;
1%의 가능성이면 충분하다!
최선을 다하자!
안됩니다.
안됩니다.
greedy 알고리즘
[url]http://bbs.kldp.org/viewtopic.php?t
http://bbs.kldp.org/viewtopic.php?t=39813
정적으로 메모리를 할당한 후 이를 delete 또는 delete[] 연산
정적으로 메모리를 할당한 후 이를 delete 또는 delete[] 연산자로 해제하면 아마 컴파일시 에러가 나지 않을까 싶습니다. 만약 에러가 나지 않는다면 동적으로 그부분이 실행될때 이상한 행동을 하지 않을까 생각됩니다.
직관적으로 보았을때 delete[] 연산자가 p_a[6]를 어떤 정보를 참고하여 메모리를 해제할지 알 수 없을 것 같습니다.
-------------
포탈이는 불사신
댓글 달기