또 다른 C 질문 : C 구조체의 메모리 관리
이의 내가char*
타입의 포인터 멤버가 구조체가 있다고 가정 해 보자. 내가 구조체의 인스턴스를 초기화 할 때
나는 malloc
전화 : 다음
MyStruct* ptr = (MyStruct*)malloc(sizeof(MyStruct)
그리고를 char*
회원 메모리의 256 바이트를 할당 :
ptr->mem = (char*)malloc(sizeof(char)*256);
포인터 멤버에 무슨 전화 할 때 가리키는 메모리가 free(ptr);
입니까? valgrind를 사용하여 프로그램을 검사 할 때 메모리 누수가 있음을 알았지 만 명시 적으로 호출 할 때 free(ptr->member);
여전히 메모리 누수가 있고 valgrind에 "유효하지 않은"오류가 표시됩니다.
메모리를 관리하는 적절한 방법은 무엇입니까? 회원이 지적 했습니까?
C에서'malloc'의 반환 값을 변환해서는 안됩니다. –
'memcpy '의 문제점은 무엇입니까? –
@Oli Charlesworth : 왜 안 되니? –