[英]Why FILE pointer after being passed to a function changes when back in main in C?
[英]Why I this address is being changed after initialization in main function? (C)
我是 C 的新手,我正在處理的項目遇到一些問題。
在 vm.h
#define STACK_MAX 256
typedef double Value;
typedef struct {
Value values[STACK_MAX];
Value* top;
}
typedef struct {
Chunk* chunk;
uint8_t* ip; // Instruction pointer
Stack stack;
} VM;
VM initVm();
void resetStack(Stack* stack);
在 vm.c
void resetStack(Stack* stack) {
stack->top = stack->values
}
VM initVM() {
VM vm;
resetStack(&vm.stack);
return VM;
}
在main.c
int main() {
VM vm = initVM();
...
}
好的,這就是問題所在。 在我初始化 vm 之后,vm.stack.top 指向 vm.stack.values[0] (我不知道為什么用垃圾值而不是零填充),但是無論如何,一條指令之后,vm。 stack.top 已更改並開始指向其他內容,或者有時 vm.stack.values[0] 的地址更改為另一個。
問題是在本地 scope 中聲明了 VM。 在堆中分配 VM 解決了它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.