gpt4 book ai didi

c - 动态数组混淆

转载 作者:太空狗 更新时间:2023-10-29 15:10:32 24 4
gpt4 key购买 nike

我刚刚复习了一些 C 概念,但我对某些行为感到困惑。考虑以下代码片段:

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

int main (){


int * arr;
arr= malloc(3*sizeof(*arr));
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
printf("value is %d \n", arr[3]);

return 0;


}

问题是程序运行正常!据我了解,我为 3 个整数的数组分配内存。所以基本上当我尝试在 arr[3] 中放置一个值时,应该有一个 segmentation fault 因为没有为其分配内存。但它工作正常并打印值 4。这是一些奇怪的行为,或者我真的需要修改基本的 C。如果有人能提供一些解释,我将不胜感激。谢谢。

最佳答案

从技术上讲,它是未定义的行为,这意味着任何事情都可能发生,不一定是段错误。
只是您的程序不是有效程序,您不应该编写无效程序并期望它们的有效/无效行为。

关于c - 动态数组混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968525/

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