为什么访问越界了没有收到SIGSEGV信号?

behire123 behire123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
const int K = 1024;
int i = 0;
char *p = new char;
while(i++ < 20)
{
p = p + i * K;
*p = 'A';
printf("p = %c(%0x), i = %d.\n", *p, p, i);
sleep(1);
}

delete p;
p = NULL;


要循环15次才收到SIGSEGV信号。也就是说越界了15K才会收到段错误的信号。一页4K大小,好像跟书本上说的内存管理有冲突啊?谁能解析一下?
...全文
评论 29
收藏 已收藏
分享
返回顶部
behire123
C语言 70,039 成员 243,237 内容