返回前分段错误
为什么以下代码在返回之前会出现分段错误:
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;
}
此时,cout 将显示,但我收到分段错误。
Why does the following code seg fault before returning:
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;
}
At the minute, the cout will display, but I get a segmentation fault.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在调用此函数之前,您需要为前缀分配内存:
或者您可以重构代码,例如,
You need to allocate memory for prefix before calling this:
or you could refactor the code e.g.,
您忘记为
prefix
分配一些内存。You forgot to assign some memory to
prefix
.没有为前缀分配内存。
简而言之,它可以访问任何产生分段错误的内存位置。
no memory has been allocated to prefix.
so it can access any memory location which which generates segmentation fault , in simple words.