【发布时间】:2012-01-10 17:06:53
【问题描述】:
我写了一个示例程序:
#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));
谁能告诉我为什么?
【问题讨论】:
-
你的调试器(例如,
gdb如果在 Linux 上)告诉你什么? -
哦,那些必须使用 C 的人的悲剧...
-
我在开发 c++ 的 windows 上运行这个。调试器说故障是在第一次插入 set 期间。