0
나는 포인터와 같은 구조가 필요하고 그것을 위해 메모리 할당을 지우고 싶지만 한 번 이상 한 번 이상 문제가 발생할 경우 두려워요. 여기에 내가 무슨 뜻입니다 :구조체 ptrs에 도우미 함수를 사용하는 더 좋은 방법은 무엇입니까?
structptr.h
typedef struct STRUCTPTR STRUCTPTR;
STRUCTPTR *STRUCTPTR_init();
structptr.c
struct STRUCTPTR
{
char *t1;
int t2;
float t3;
double t4;
};
STRUCTPTR *STRUCTPTR_init()
{
STRUCTPTR *temp = calloc(4, sizeof (struct STRUCTPTR));
if (!temp)
return NULL;
return temp;
}
main.c를 당신이 올바른 이해한다면, 당신이 만들
#include "structptr.h"
int main(void)
{
STRUCTPTR *s = STRUCTPTR_init();
s = STRUCTPTR_init();
return 0;
}
STRUCTPTR_init에 대한 첫 번째 호출에서 할당 된 메모리가 손실됩니다. 이것은 메모리 누수입니다. 더 이상 메모리를 올바르게 참조 할 수 없습니다. –
대신에'if (! temp)가 NULL을 반환합니다; return temp;''if (! temp) return temp == NULL? NULL : 임시; NULL == 임시 변수를 반환합니까? 임시 : NULL;'안전합니다. –
짐이 언급 한 메모리 누수 이외에 어떤 문제가 걱정되는지는 명확하지 않습니다. – jamesdlin