为什么以下代码会出现分段错误?
int main()
{
char *t = "Working on RedHat Linux";
char *s;
s = malloc (8000 * sizeof(char));
memcpy(s,t,7000);
printf("s = %s\nt = %s\n",s,t);
free(s);
}
Run Code Online (Sandbox Code Playgroud)
我为's'分配了8000bytes.并且仅将't'复制到s直到7000字节.虽然我为's'分配了8000个字节,为什么它会给出分段错误?
EFr*_*aim 11
分段错误是因为t指向小于7000字节的区域.当没有映射可读页面时(在字符串文字结束之后),您可能正在尝试读入某个区域"Working on RedHat Linux".您应该将memcpy限制为sizeof("Working on RedHat Linux")字节.
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |