4
동적으로 할당되지 않은 변수를 가리키는 struct 멤버가 어떻게되는지 궁금합니다. 그래서 :구조체 포인터 멤버 및 메모리 관리
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int value;
int *pointer;
} MyStruct;
int year = 1989;
int main (int argc, const char * argv[]) {
MyStruct *myStruct = (MyStruct *) malloc(sizeof(MyStruct));
myStruct->value = 100;
myStruct->pointer = &year;
year++;
printf("%d \n", *myStruct->pointer);
// what happens to the myStruct->pointer member when we free myStruct ?
free(myStruct);
return EXIT_SUCCESS;
}
나는 올바른 년에 더 이상 포인트를 파괴 것 같은데요? 만약 그렇다면, 포인터가 함수를 가리키고 있다면 포인터는 똑같을 것이다. 이 같은
:
typedef struct {
int value;
void (*someFunc)();
} MyStruct;
그리고 나중에 :
void sayHi(){
printf("hi");
}
...
myStruct->someFunc = sayHi;
제외하고 필요한 특별한 정리 무료() 우리의 구조체가 malloc을 사용하여 만든 경우? 누구에게나 통찰력을 주셔서 감사합니다.
멋진 사용하는 것이 유효 할 것이다. 그것이 내가 생각했던 거죠. (upvote에 더 많은 담당자가 필요하지만, 내가 그것을 가질 때). –
@ 랄프 D : 걱정할 필요가 없습니다. 잠시 기다리십시오.이 답변을 명확하게 설명하는 측면에서 어느 대답이 가장 적합한 지 확인한 다음 그 대답을 수락하십시오. 그러면 다음 사람이이 질문을 찾는 데 도움이됩니다. – Erik
빠른 응답을 보내 주셔서 다시 한번 감사드립니다. 나는 C를 배우는 것을 정말로 즐겁게하고있다. –