首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-10-18 
为什么访问越界了没有收到SIGSEGV信号?const int K 1024int i 0char *p new charwhile(i++ 20)

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

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

热点排行