gpt4 book ai didi

c++ - 数组指针永远不会出现段错误?

转载 作者:行者123 更新时间:2023-11-30 19:04:00 25 4
gpt4 key购买 nike

我有一些我不明白的事情。

这就是我所做的:

float* test = (float*) malloc(4 * sizeof(float) );

然后我尝试这样做

test[100] = 1.0;
printf("%f\n",test[100]);

而且......它起作用了......

我正在等待段错误,但没有,我不明白为什么。我想这样做是为了验证我的数组是否已正确分配。我真的没想到,也许我错过了一些东西,所以我在互联网上搜索,似乎每个人都会出现段错误......所以我才来这里问问。谢谢

最佳答案

你造成的是未定义的行为 - 在这种情况下,它按预期工作,但以任何方式依赖它都是一个糟糕的主意:编译器优化或更改操作系统可能会突然导致“奇怪”的行为。您应该阅读有关此主题的更多内容,但简而言之,对于未定义的行为,编译器可以做任何它想做的事情。

我没有足够的知识来确定,但我假设您的操作系统为您的程序准备了整个内存页。在 Linux 中,默认情况下它是 4 KiB,并且您访问的字节最多为 400,因此仍然有足够的空间。因此,您可能正在访问为您的程序分配的内存,因为操作系统使用不小于 4 KiB 的内存块。

关于c++ - 数组指针永远不会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53130153/

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