我写了一个示例程序:
#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;
}
Run Code Online (Sandbox Code Playgroud)
该程序给出了分段错误
myset[j].insert((int)strtol(pch, NULL, 10));
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么?
char *data;
strcpy(data,str[i]);
Run Code Online (Sandbox Code Playgroud)
尝试将数据复制到未分配的指针并导致未定义的行为.
您的指针应指向一个足够大的已分配内存,以容纳您要复制到其中的数据.
理想的解决方案是在C++编程时使用std::string和忘记char *.
| 归档时间: |
|
| 查看次数: |
1408 次 |
| 最近记录: |