gpt4 book ai didi

c++ - 为什么我获得未分配内存的读写权限?

转载 作者:太空狗 更新时间:2023-10-29 19:40:27 25 4
gpt4 key购买 nike

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

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

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

即使我只分配了 1*sizeof(char) 的内存,我也可以成功复制整个字符串,而且我获得了对 所在的整个内存区域的读写权限“复制文本” 存在。

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

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

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

注意:我使用的是 GCC 编译器 v4.6.3

最佳答案

这是因为 malloc16 或 32 字节的 block 工作,因为这种策略使内存访问更加高效。因此,当您分配 1 个字节 时,接下来的 15 个字节 可能是您的。

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

关于c++ - 为什么我获得未分配内存的读写权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com