今天在调试代码发现一个很诡异的问题:
全局变量:
static nc_tables_t nc_tables[NC_MAX_CLIENT];
static char g_ppc_config[50] = { 0 };
static char g_ppc_status[50] = { 0 };
static char g_key_update[50] = { 0 };
static char g_key_realtime[50] = { 0 };
static char g_key[KEY_LEN] = { 0 };
static char g_iv[KEY_LEN] = { 0 };
发现在程序运行时nc_tables里面的值会被改变,但是找遍整个源程序也没找到是在哪里改变的。
后来发现是由于g_iv和g_key这两个变量在赋值时存在数组越界情况,导致nc_tables里面的值改变。
这个全局变量的内存分布是个什么情况呢?
阅读(980) | 评论(0) | 转发(0) |