4
我想知道結構成員指向一個非動態分配的變量會發生什麼。所以:結構指針成員和內存管理
#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,但我會的時候我有)。 – 2011-04-10 21:41:46
@Ralph D:不用擔心。稍等片刻,看清楚哪個答案最好解釋清楚,然後接受答案 - 這將有助於下一個人找到這個問題。 – Erik 2011-04-10 21:44:20
再次感謝您的快速響應。我真的很享受學習C. – 2011-04-11 01:01:21