我在C ++中使用算法,我试图通过将cin更改为scanf来加速执行。但是当我这样做时,我开始出现SIGSEGV错误。
int main(){
int nominal;
int check;
string b;
int x;
int a;
int i = 0;
//cin >> a;
scanf ("%d",&a);
for (int i = 0; i<a; i++){
//cin >> b;
scanf("%s",&b);
std::priority_queue < int > Q;
std::priority_queue < int, std::vector < int >, std::greater < int > > moneyBox;
while (b!="0"){
代码在进入第一个时停止工作。有关如何解决它的任何提示?
答案 0 :(得分:0)
scanf()
使用与预定类型对应的格式字符。 "%s"
用于在char
数组中存储空终止的c字符串。因此,scanf()
会将c ++字符串&b
的地址误解为有效char*
,指向预分配的足够大小的char数组。这会破坏内存并可能导致UB。