考虑到以下设置,我遇到了一个非常奇怪的现象,我无法解释.使用Visual Studio 2005,以下代码导致崩溃.我想知道原因.
playground.cpp
static int local=-1;
#include "common.h"
int main(int arg)
{
setit();
docastorUpdate();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
COMMON.H
#include <stdio.h>
#include <iostream>
void docastorUpdate();
static int *gemini;
inline void setit()
{
gemini = &local;
}
Run Code Online (Sandbox Code Playgroud)
castor.cpp
static int local = 2;
#include "common.h"
void docastorUpdate() {
setit();
// crashing here, dereferencing a null pointer
std::cout << "castor:" << *gemini << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当崩溃消失时
简而言之,我需要帮助才能理解原因.任何建议表示赞赏!(我知道,这个解决方案不是最好的部分之一,只是好奇.)