gpt4 book ai didi

C程序内存冲突

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:09 27 4
gpt4 key购买 nike

我有下面的程序,其中内存是只读的,但我仍然可以写入它。

main()
{
char *p="amit";
p[0]="s";
printf("%s",p);
}

输出是“smit”

这是预期的输出,因为 p 指向一个只读的位置吗?当我在 GCC 或 Visual C++ 上运行该程序时,出现段错误,但在 Turbo C++ 上出现“smit”。

请确认此行为...

最佳答案

写入字符串文字会产生未定义的行为,因此编译器可以在您这样做时做任何它想做的事情。

简单的答案是 Turbo C++ 为实模式编译,因此没有任何内存受到保护。编译器和操作系统都不会阻止您在任何地方编写任何东西。

关于C程序内存冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5138878/

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