gpt4 book ai didi

c++ - 插入集合时出现段错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:28:19 24 4
gpt4 key购买 nike

我写了一个示例程序:

#include<iostream>
#include<set>
#include<conio.h>
using namespace std;
int main()
{
set<int> myset[4];
char *str[4]={"1-2-3-4","3-4-34-3","7-45-35-3","67-45466-3633-3"};

for(int i=0;i<4;i++)
{
char *data;
strcpy(data,str[i]);
char *pch;
pch = strtok (data,"-");
for(int j=0;pch != NULL&&j<4;j++)
{
myset[j].insert((int)strtol(pch, NULL, 10));
pch = strtok (NULL, "-");
}
}

getch();
return 0;
}

这个程序在

处给出了一个段错误
myset[j].insert((int)strtol(pch, NULL, 10));

谁能告诉我为什么?

最佳答案

char *data;
strcpy(data,str[i]);

尝试将数据复制到未分配的指针并导致未定义的行为
您的指针应该指向一个分配的内存,该内存足够大以容纳您要复制到其中的数据。

理想的解决方案是在使用 C++ 编程时使用 std::string 而忘记 char *

关于c++ - 插入集合时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8807335/

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