database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9571 게시물 읽기
No. 9571
text 구조체 파라미터 메모리 할당 후 반환 방법
작성자
초보DBA(r00tlee)
작성일
2015-07-13 13:53
조회수
9,134

 

postgre 제품 소스 내  contrib/sslinfo/sslinfo.c 라는 파일에서 아래와 같은 소스코드가 제공이 되는데요..

static Datum ASN1_STRING_to_text()....

{

        text *result;

        ...

        result = cstring_to_text(dp);

        if (dp != sp)

                pfree(dp);

        BIO_free(membuf);

       PG_RETURN_TEXT_P(result);

}

이런 식으로 *text 구조체에 대한 반환을 합니다. 여기서 궁금한 내용은 PG_RETURN_TEXT_P 라는 매크로를 사용하여 결과 값을 반환하면,

윗 줄에서 선언한 cstring_to_text 함수 내 palloc이라는 메모리 할당 영역이 해제를 해주는지 궁금합니다.

 

이 글에 대한 댓글이 총 1건 있습니다.

static Datum ASN1_STRING_to_text()....

{

text *result;

...

result = cstring_to_text(dp);

if (dp != sp)

pfree(dp);

BIO_free(membuf);

PG_RETURN_TEXT_P(result);

}

 

이런 식으로 *text 구조체에 대한 반환을 합니다. 여기서 궁금한 내용은 PG_RETURN_TEXT_P 라는 매크로를 사용하여 결과 값을 반환하면, 윗 줄에서 선언한 cstring_to_text 함수 내 palloc이라는 메모리 할당 영역이 해제를 해주는지 궁금합니다.

 

네. 다만, cstring_to_text() 함수는 palloc() 를 호출하고 있는데, palloc() 이 할당하는 메모리는 PostgreSQL 이 알아서 관리하고 해제해 줍니다. 그러니까 메모리 해제는 PG_RETURN_TEXT_P 라는 매크로 때문이 아니라 cstring_to_text() 함수가 호출하는 palloc() 때문입니다.

초보대왕님이 2015-07-14 18:29에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
9574pgsql 텍스트 조합을 파라미터 변수명으로 인식 [2]
김재성
2015-07-20
8998
9573return 타입 문제점.. [2]
e도전
2015-07-14
9979
9572undefined symbol에 관해서 [5]
상록수
2015-07-13
9651
9571text 구조체 파라미터 메모리 할당 후 반환 방법 [1]
초보DBA
2015-07-13
9134
9570PL단 C단 형변환.. [1]
초보DBA
2015-07-09
8887
9568데이터 가로 정렬 [2]
초보
2015-07-08
9296
9567PG_GETARG_INT32 관련.. [5]
초보DBA
2015-07-08
9119
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다