gpt4 book ai didi

c - 为什么当 strcpy() 导致缓冲区溢出时没有段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:04 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main() {
char *a = "aaaaaaaaaaaaaaaa";
char b[1];
strcpy(b, a);
printf("%s\n", b);
}

运行时打印:

aaaaaaaaaaaaaaaa

如果我使 *a 超长,例如 *a="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",那么它会导致段错误。

为什么第一种情况没有溢出?

最佳答案

当您的程序试图访问不属于您程序的虚拟地址空间的内存时,就会发生段错误;如果您只是在原始复制目的地之后覆盖一些内容,就不会发生这种情况。

关于c - 为什么当 strcpy() 导致缓冲区溢出时没有段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352371/

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