free( ptr ); <--- 질문

익명 사용자의 이미지

1.free(ptr)를 통하여
ptr에 할당되어진 메모리를 해제한후에
부지중에 다시 재호출해도
상관없나요? ( 2번 이상 호출해도 무방한지? )

2.free(ptr) 를 하면
커널이 ptr의 사이즈를 어떻게 헤아릴까 궁금합니다.

익명 사용자의 이미지

아마도 2번이상 한다면, ^^ 문제가 생기겠죠...

보통 커널같은곳에서는 할당된 메모리를 처리하기 위한 자료구조가 있습
니다. 리스트나, 트리나 이런것요... 예를 들어서 malloc 해서

1000번지의 메모리를 100 바이트 할당했다면 실제로 996 바이트 부터

1100 까지 104바이트를 할당해 주고 996바이트에는 할당된 메모리의

크기를 저장하고 실제로 1000번지를 리턴해줍니다. 그러면,

free 시에는 4바이트 앞 부분을 읽어서 그 만큼 해제해 주면 되는

겁니다. 이런 이유로... 만약 2번 프리한다면

큰 문제가 생길수 있겠죠? 그럼 고운 하루...

익명 사용자의 이미지

메모리가 할당이 될때, 운영체제로 부터 일정 사이즈 만큼
블럭으로 할당 받은 다음 전역 힙을 관리하는 자료구조를
두어서 프로그램에서 할당된 힙을 따로 관리를 하지요..

아래는 할당과 해제된 메모리 상황의 블럭 예제입니다.

위와 같이 사이즈 정보를 보함하고 있기 때문에,
free시에는 사이즈 정보가 필요 없습니다.

또 이미 해제된 힙을 다시 해제 한다면.. 이것은 화를 초래하겠지요

더 자세히 공부 하고 싶으면 직접 malloc소스를 봐보세요...
주로 사용하는게 malloc/free이지만,, 여러가지 메모리 할당
관련 훅이 있어서,,, 메모리 할당이 그리 간단한 주제만은 아닐껍니다.

http//www.cs.colorado.edu/homes/zorn/public_html/Malloc.html#gnumalloc

익명 사용자의 이미지

너무 똑똑하신것 같은... 흐.. 모르시는게 없다는...

그럼 좋은 답변 계속 감사드립니다. ^^; 고운 하루되시길...

익명 사용자의 이미지

.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.