【发布时间】:2013-11-13 06:04:55
【问题描述】:
当我调用newUnitID() 时,我目前遇到了分段错误(分段错误:11)。
不知道我做错了什么。
这是我函数所在的头文件:
#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <ctime>
#include <vector>
#ifndef UnitManager
#define UnitManager
using namespace std;
char randomIDChar(){
static const char alphanum[] =
"0123456789"
"!@#$%^&*"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
int stringLength = sizeof(alphanum) - 1;
srand(time(0));
for(int z=0; z < 21; z++)
{
return alphanum[rand() % stringLength];
}
return 1;
}
string newUnitID(){
vector<char> v;
for(int i=0; i < 50; i++){
v[i] = randomIDChar();
}
string str(v.begin(),v.end());
return str;
}
#endif
【问题讨论】:
-
simonc 的回答很好,但我可以建议您学习使用 Valgrind 或 GDB 等工具吗?基础知识很容易掌握(这就是您所需要的,真的),它可以为您节省大量时间来尝试在代码中查找此类错误。
标签: c++ string random stdstring