C++ 返回前分段错误

C++ 返回前分段错误,c++,segmentation-fault,C++,Segmentation Fault,返回前,为什么以下代码seg出现故障: int main() { char iD[20]; memset (iD, 0, 20); char* prefix; srand (time(NULL) ); int iPrefix = rand()%1000000; sprintf(prefix, "%i", iPrefix); int len = strlen(prefix); char* staticChar = "123456789"; //set prefix into ID memc

返回前,为什么以下代码seg出现故障:

int main()
{
char iD[20];
memset (iD, 0, 20);

char* prefix;
srand (time(NULL) );
int iPrefix = rand()%1000000;

sprintf(prefix, "%i", iPrefix);
int len = strlen(prefix);

char* staticChar = "123456789";

//set prefix into ID
memcpy(iD, prefix, len);
// append static value
memcpy(iD+len, staticChar, 20-len);

cout << "END " << endl;

return 0;
}
intmain()
{
字符iD[20];
memset(iD,0,20);
字符*前缀;
srand(时间(空));
int iPrefix=rand()%1000000;
sprintf(前缀为“%i”,iPrefix);
int len=strlen(前缀);
char*staticChar=“123456789”;
//将前缀设置为ID
memcpy(iD、前缀、len);
//附加静态值
memcpy(iD+len,staticChar,20 len);

cout调用此函数之前,需要为前缀分配内存:

sprintf(prefix, "%i", iPrefix);
或者你可以重构代码,例如

snprintf(iD, sizeof(iD), "%i%s", iPrefix, staticChar);

在调用此函数之前,需要为前缀分配内存:

sprintf(prefix, "%i", iPrefix);
或者你可以重构代码,例如

snprintf(iD, sizeof(iD), "%i%s", iPrefix, staticChar);
您忘记为
前缀
分配一些内存


您忘了给前缀分配一些内存

没有给前缀分配内存。
因此,它可以访问产生分段错误的任何内存位置,简单地说。

没有为前缀分配内存。
因此,它可以访问产生分段错误的任何内存位置,简单地说。

FWIW,C语言没有
cout
,因此您应该删除
C
标记。FWIW,C语言没有
cout
,因此您应该删除
C
标记。