为什么我对未分配的内存有读写权限?

我对以下代码片段的行为感到困惑,

我已经声明了一个char指针,并将其指向已分配大小的内存位置(1 * sizeof(char))。

char *src ; src = (char*)malloc(1 * sizeof(char)); strcpy(src,"Copy text"); 

即使我只分配了1*sizeof(char)内存,我也可以成功复制整个字符串,并且我在整个存储区域中获得"Copy text"读写权限。

即下面的代码打印修改后的值。它打印"Copy RRxt"

 src[5] = 'R'; src[6] = 'R'; printf("%s \n" , src); 

所以我很困惑为什么我没有在上面的代码片段中得到"Segmentation fault"错误。

注意:我正在使用GCC编译器v4.6.3

这是因为mallocchunks of 16 or 32 byteschunks of 16 or 32 bytes工作,因为这种策略使内存访问更有效。 因此,当您分配1 bytenext 15 bytes可能是您的。

但是,我不建议作弊知道这个技巧,但正确分配正确的字节数。