在OSX中,我有以下代码。使用gcc 4.0.1。我是OSX开发的新手,所以我不确定其他系统信息在这里有用......
static int textstrArgs[] = { 1, 1, 1 };
void func()
{
static int first = 1;
if (first)
{
first = 0;
// stuff
}
/* other stuff */
}
其中func()声明为'extern'并从另一个库调用。
问题是'texstrArgs [2]'和'first'的地址是相同的。也就是说,当应用程序加载它时,它们将这两个变量放在内存中的同一位置。当调用func()时,第一个= 0会破坏静态textstrArgs数组中的值。
我会这样做会导致这种情况发生吗?
感谢任何人都能给予的帮助。
答案 0 :(得分:1)
我怀疑他们实际上是在分享地址。我相信你更有可能是越界或类似的访问数组。
尝试打印两个变量的地址。如果您的怀疑是正确的,那将告诉您。
答案 1 :(得分:0)
只是预感 - 尝试改变:
static int textstrArgs[] = { 1, 1, 1 };
到
static int textstrArgs[3] = { 1, 1, 1 };
另一件事 - 您实际上是在任何地方引用textstrArgs吗?如果没有,那么它可能会被优化掉。