C++ 에서 메모리에 설정과 삭제에 대한 질문입니다.

kknd345의 이미지

지금 하고자 하는 걸 예를 들어 설명할게요

일단 현재까지 한것은

단순하게 표현하면

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]만 지우는 방법 없을까요?

kooya의 이미지

동적메모리로 잡은것(new)은 delete로 할당 해제가 가능하지만

stack에 잡히는 정적 배열은 맘대로 지울수가 없습니다.

p_a[1]=&a[99];

와 같은 표현은

p_a[1]=a + 99; 로 표현할수 있습니다.

근데 일부러 이렇게 표현하신건가요?

greedy 알고리즘

kknd345의 이미지

아~ 실수했군요. 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%의 가능성이면 충분하다!
최선을 다하자!

kooya의 이미지

안됩니다.

greedy 알고리즘

pizza1977의 이미지

정적으로 메모리를 할당한 후 이를 delete 또는 delete[] 연산자로 해제하면 아마 컴파일시 에러가 나지 않을까 싶습니다. 만약 에러가 나지 않는다면 동적으로 그부분이 실행될때 이상한 행동을 하지 않을까 생각됩니다.
직관적으로 보았을때 delete[] 연산자가 p_a[6]를 어떤 정보를 참고하여 메모리를 해제할지 알 수 없을 것 같습니다.

-------------
포탈이는 불사신

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.