gpt4 book ai didi

c++ - 静态变量是全局变量吗?

转载 作者:行者123 更新时间:2023-11-28 05:40:31 26 4
gpt4 key购买 nike

我有两个 C++ 问题。

首先,全局变量和静态变量是一回事吗?静态变量有什么特别之处?

其次,我实际上编写了一个项目,如果我不使用静态变量,我的代码会向我发送下一个错误:

Run-Time Check Failure #2 - Stack around the variable 'szData' was corrupted.

这个错误是由于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;
}
}

}

谁能帮帮我?谢谢!

最佳答案

静态变量不等于全局,静态变量可以有作用域:编译单元内、函数内、类内。

对于问题 #2,szData 有 31 个字节,但是 sprintf 试图在它上面放更多,所以它破坏了附近的东西。即使您将其设为静态,它也会破坏其他内容。

关于c++ - 静态变量是全局变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37214972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com