gpt4 book ai didi

C++在不知道大小的情况下越界时检测悬挂指针

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:46 24 4
gpt4 key购买 nike

考虑一段代码

int main(int argc,char* argv[]){
int *arrPtr = new int[4];
for (int i=0;i<4;i++)
arrPtr[i]=i*2;


for (int i=0;i<10;i++){
arrPtr++;
cout<<"arrPtr ["<<i<<"]\t"<<*arrPtr<<endl;
}
cout<<endl;
return 0; }

当我编译这个程序时

g++ main.cpp -o main && ./main

它给了我

arrPtr [0]  2arrPtr [1]  4arrPtr [2]  6arrPtr [3]  0arrPtr [4]  135145arrPtr [5]  0arrPtr [6]  0arrPtr [7]  0arrPtr [8]  0arrPtr [9]  0

当 arrPtr 未指向“有效”元素时,我希望能够检测(抛出或检查)。在上面的代码中,最后一个有效元素是 arrPtr[3]。

请不要回答“我也是”!

最佳答案

使用 vector

int main()
{
std::vector<int> a(4);

for (size_t i = 0; i < 4; ++i)
a[i] = i * 2;
for (size_t i = 0; i < 10; ++i)
std::cout << i << ": " << a.at(i) << std::endl;
}

结果:

0: 0
1: 2
2: 4
3: 6
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Aborted

关于C++在不知道大小的情况下越界时检测悬挂指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11795521/

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