我在C++中有兩個問題。一個靜態變量是全局變量嗎?
首先,是一個全局變量和靜態變量一樣嗎?靜態變量有什麼特別之處?
其次,我居然代碼的項目,如果我不使用靜態變量,我的代碼給我發了一個錯誤:
運行時檢查失敗#2 - 堆棧圍繞變量「szData」是 損壞。
這個錯誤出現因sprintf的,因爲我刪除它,一切都確定..
bool CreateFile(MyCards** ppCards)
{
fstream ficCar;
static char szData[31];
ficEmployes.open("./my_cards.dat", ios::in | ios::binary);
if (!ficCar.fail())
{
ficCar.close();
return false;
}
else
{
sort(ppCards, ppCards + 26271, OrderedCards);
ppCards.open("./nom_cartes.index", ios::out | ios::binary);
if (ficCar.fail())
{
throw "Error";
}
else
{
for (int indice = 0; indice < 10123; indice++)
{
sprintf(szData, "%-20s %010d \n",
ppCards[indice]->GetNom(),
ppCards[indice]->GetPosition());
ficCar.write(szEnregistrement, 30);
}
ficCar.close();
return true;
}
}
}
任何人都可以幫我嗎?謝謝!
我無法發現該代碼中的任何'靜態' – user463035818
如果'ficCar'沒有失敗你關閉它並返回,只有當它失敗時,你繼續使用它,這真的是你想要的嗎? – user463035818
糟糕!我犯了一個錯誤。我編輯了我的代碼,它是靜態字符szData [31]; – SurveyVisual