全局变量声明错误导致崩溃
代码如下
file:main.cpp
#include "bad.h";
extern char *key;
void main(int c,char** v){
function(key);
};
file:bad.h
void function(char *);
file:bad.cpp
char key[8]={'0','1','2','3','4','5','6','7'};
void function(char * arg){
do something with arg;
}
现象 代码编译通过,但是运行时崩溃,看调用栈是崩溃在function里面,EXC_BAD_ACCESS,应该是内存访问错误,查看function的函数的参数arg=”“,全局变量key没有传进去。
解决 将main.cpp中的声明与bad.cpp中的声明统一为char key[8]问题得以解决。
本文介绍了一个因全局变量声明不一致导致的程序崩溃案例。在C++项目中, main.cpp文件中extern声明的char* key未正确对应到bad.cpp中定义的char key[8],导致function函数无法获取正确的参数值,最终引发运行时崩溃。通过调整main.cpp中的声明与bad.cpp保持一致解决了此问题。
1169

被折叠的 条评论
为什么被折叠?



