할당 한 메모리에 대한 포인터 만 포함하는 구조체가 있습니다. 재귀 적으로 각 요소를 자유롭게 호출하는 대신 포인터 인 각 요소를 해제하는 방법이 있습니까?C 구조체를 재귀 적으로 해제합니다.
model* mdl = malloc (...);
mdl->vertices = malloc (...);
mdl->normals = malloc (...);
mdl->uv_coords = malloc (...);
mdl->quads = malloc (...);
mdl->triangles = malloc (...);
그것은 각 포인터를 무료로 간단합니다 :
typedef struct { ... } vertex;
typedef struct { ... } normal;
typedef struct { ... } texture_coord;
typedef struct
{
vertex* vertices;
normal* normals;
texture_coord* uv_coords;
int* quads;
int* triangles;
} model;
그리고 내 코드에서
내가 모델을 생성하기 위해 구조체의 각각의 malloc : 예를 들어,의 내가이 레이아웃을 가정 해 봅시다 그래서 :
반복적으로 mdl rathe의 포인터를 반복 할 수있는 방법이 있습니까? 각 요소를 무료로 호출하는 것보다?
(실제로 는 단지 각각에 대해 free()를 작성하는 거의 모든 작업,하지만 그것은 코드 중복을 줄이고 배울 도움이 될 것입니다)별로
아, 감사합니다! 이 솔루션은 더러워 보일지라도 성능 저하없이 코드 중복을 피할 수 있으며 이전에 보지 못한 접근 방식입니다. 아마 실제로는 사용하지 않겠지 만 코드를 다시 구성하는 것보다 흥미로운 구현으로 제 질문을 해결할 것입니다. – Kai
매번 매크로를 다시 정의 할 필요없이 매크로에 대한 인수를 수행 할 수 있습니까? –
나는 여기에 '학대'라는 단어를 남용한다고 생각합니다. 이런 식으로 전처리 기가 만들어 졌다고 생각합니다. 악용 사례 -> 사용 :) – Gewure