在OSX中,我有以下代碼。使用gcc 4.0.1。我是新來OSX發展,使我不知道還有什麼其他的系統信息會在這裏有用...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()時,first = 0將破壞靜態textstrArgs數組中的值。
我會這樣做,會導致這種情況發生?
感謝任何人的幫助。
如果這是真的,這是一個錯誤。你有沒有試過gcc 4.2? – kennytm 2010-06-22 20:04:46
你能分享你用於測試的簡單代碼片段嗎? – Eiko 2010-06-22 20:10:19