C++ 返回前分段错误
返回前,为什么以下代码seg出现故障: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
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
标记。