gpt4 book ai didi

C++:写入/读取无效/超出绑定(bind)的数组索引?

转载 作者:搜寻专家 更新时间:2023-10-31 00:18:28 27 4
gpt4 key购买 nike

首先,我是 C++ 编程的初学者。昨天我遇到了一件比较奇怪的事情。我试图通过指向它的指针来确定数组的长度。由于 sizeof 不起作用,我做了一些 Google 搜索并最终访问了这个网站,在那里我找到了不可能的答案。相反,我应该在数组的最后一个索引处放置一个越界值,并递增一个计数器直到达到该索引。因为我不想覆盖最后一个索引中包含的信息,所以我尝试将越界值放在最后一个索引之后的一个索引中。我预计它会失败,但由于某种原因它没有。

我认为我在其他地方犯了一个错误,并且数组比我分配的要长,所以我做了以下测试:

int a[4];
a[20] = 42;
std::cout << a[20];

输出为 42,没有任何错误。为什么这行得通?这根本不应该有效,对吧?更有趣的是,这适用于任何原始类型数组。但是,一旦我使用 std::string,程序就会立即以 1 存在。

有什么想法吗?

最佳答案

您的系统恰好没有使用恰好距离数组地址远 20 * sizeof(int) 字节的内存。 (从它的开始。)或者内存属于你的进程,因此你可以弄乱它,要么为自己破坏一些东西,要么只是幸运的巧合什么都不破坏。

底线,不要那样做:)

关于C++:写入/读取无效/超出绑定(bind)的数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10571794/

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