读书人

为啥访问越界了没有收到SIGSEGV信号

发布时间: 2012-10-18 13:46:55 作者: rapoo

为什么访问越界了没有收到SIGSEGV信号?
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大小,好像跟书本上说的内存管理有冲突啊?谁能解析一下?

[解决办法]
楼主还是换本靠谱的书看看吧。
[解决办法]
内存管理不是以字节为单位而是以块或页为单位的。

读书人网 >C语言

热点推荐