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