首先,我是 C++ 编程的初学者。昨天我遇到了一件很奇怪的事情。我试图通过指向它的指针来确定数组的长度。由于sizeof不起作用,我做了一点谷歌搜索,最后在这个网站上找到了不可能的答案。相反,我应该在数组的最后一个索引处放置一个超出界限的值,并增加一个计数器,直到达到这个索引。因为我不想覆盖最后一个索引中包含的信息,所以我尝试将超出界限的值放在最后一个索引之后。我预计它会失败,但由于某种原因它没有。
我认为我在其他地方犯了一个错误,并且数组比我分配的要长,所以我做了以下测试:
int a[4];
a[20] = 42;
std::cout << a[20];
输出为 42,没有任何错误。为什么这行得通?这根本不应该有效,对吧?更有趣的是它适用于任何原始类型数组。但是,一旦我使用 std::string 程序立即以 1 存在。
有任何想法吗?