【发布时间】:2019-03-30 04:30:01
【问题描述】:
我有这个“JobSequence”结构,我希望在我的主函数中实例化。为此,我创建了一个 new_JobSequence() 函数,该函数分配内存并为结构的所有字段提供适当的值。在这个函数内部,一切都根据我的调试器正确完成。但是一旦我回到我的主函数int cost 被设置为任意值baseInstance = 0x0 和list = 0x1。 jobSequence 在new_JobSequence() 前后的地址不变,与函数内部使用的地址相同。
下面是结构体的声明、函数的代码和main的代码:
typedef struct JobSequence{
Instance* baseInstance;
List* sequence;
int cost;
}JobSequence;
void new_JobSequence(Instance* baseInstance, JobSequence* jobSequence){
jobSequence = malloc(sizeof(JobSequence));
jobSequence->baseInstance = baseInstance;
jobSequence->cost = 0;
list_new(&jobSequence->sequence);
}
int main() {
int** P = baseInstance();
Instance instance;
makeInstanceFromBin(P,10,10,4,&instance);
printInstance(&instance);
JobSequence jobSequence;
setbuf(stdout, 0);
printf("address : %p\n",&jobSequence);
new_JobSequence(&instance,&jobSequence);
setbuf(stdout, 0);
printf("address : %p\n",&jobSequence);
Do other stuff (crashes because I try to access the elements of jobSequence which have 0x1 and 0x0 addresses).
}
所以我真的尝试了很多东西,但我真的无法弄清楚这里发生了什么......
感谢您的帮助。
【问题讨论】: