C++ vector的越界错误

做题的时候,c++的vector下标引用成功地坑到了自己。

参考:https://blog.csdn.net/hexiaomin_1984/article/details/26168265

在写 for 循环时候,当条件为 i < = v.size()-1的时候,  很容易出现数组越界。

    int j = a.size()-2;
    //cout << "a.size()-4:" << a.size()-4 << endl;
    for(; j >= a.size()-3; j--)
        cout << j << ",";
        cout << a[j] << ",";
    }

比如我在写上述代码时候,出现段错误,原因是数组下标越界,打印出来的a.size()-4为 18446744073709551615。说明始终无法满足循环终止条件。

使用unsigned int 的时候,-1变为4294967295

会导致数组越界,出现崩溃。 导致错误的发生。

原文地址:https://www.cnblogs.com/Shinered/p/11336991.html

时间: 2024-07-31 20:49:44

C++ vector的越界错误的相关文章

HSV做通道分离是出现的Vector内存越界错误

vector<Mat> hsvSplit; //因为我们读取的是彩色图,直方图均衡化需要在HSV空间做 split(imgHSV, hsvSplit); equalizeHist(hsvSplit[2], hsvSplit[2]); merge(hsvSplit, imgHSV); 用上面的代码做HSV通道分离的时候,出现Vector内存越界的情况 解决方案一: vector<Mat> hsvSplit; //因为我们读取的是彩色图,直方图均衡化需要在HSV空间做 hsvSplit

使用PageHeap.EXE或GFlags.EXE检查内存越界错误 (转)

2011-05-27 20:19 290人阅读 评论(0) 收藏 举报 microsoftdebuggingstructureoutputimagefile 必先利其器之一:使用PageHeap.EXE或GFlags.EXE检查内存越界错误 Article last modified on 2002-6-3 ---------------------------------------------------------------- The information in this articl

vector数组越界 KMP

#include<string> #include<stdio.h> #include<iostream> #include<vector> using namespace std; string s1,s2; vector<int>f; void init() { f[0] = 0; f[1] = 0; int n = s2.size();//n = f.size()后面f[i+1]会越界 for(int i=1,j=0;i<n;i++)

XCode6报数组越界错误的问题

今天碰到一个很奇葩的问题, 调试了半天: 错误:"index 0 beyond bounds for empty array",  意思就是说数据源数组为nil, 所以你调用直接取值自然就报错. 我叙述下我的场景: 1. 在UITaleView中创建cell, 数据源dataArray是存在并且数量为10, 然后我是[dataArray objectAtIndexindexPath.row]来取值作为cell的数据, 当然numberOfRowsAtIndexPath里面是返回data

解决:function in namespace ‘std’ does not name a type + allocator_/nullptr/dellocator_ was not declared + base operand of ‘-&gt;’ has non-pointer type ‘std::vector&lt;cv::Mat&gt;’ 错误

解决方法,用到了c++11,g++命令需要加上-std=c++11选项 附:g++默认的c++标准 gcc-6.4.0 gcc-7.2.0 默认是 -std=gnu++14gcc-4.3.6 gcc-4.4.7 gcc-4.5.4 gcc-4.6.4 gcc-4.7.4 gcc-4.8.5 gcc-4.9.4 gcc-5.4.0 默认是 -std=gnu++98gcc-3.0.4 gcc-3.1.1 gcc-3.2.3 gcc-3.3.6 gcc-3.4.6 gcc-4.0.4 gcc-4.1.

vector的越界异常

在 linux 平台只有 at(n) 会抛出 std::out_of_range 异常,而其他两个都不会. try { //cpu.at(10)= cout<<cpu.at(2)<<endl; } catch(cpu.out_of_range e) { cout<<e.what()<<endl; }

动态数组索引越界问题

1.在C++中,可以采用几种不同的方法创建一个某种类型T的对象的数组.3种常用的方法如下: #define N 10 //数组的长度N在编译时已知 T static_array[10]; int n = 20; //数组的长度n是在运行时计算的 T* dynamic_array = new T[n]; std::vector<T> vector_array; //数组的长度可以在运行时进行修改 当然,我们仍然可以使用calloc()和malloc()函数,并且这样的程序仍然能够通过编译并顺利运

STL vector的简单用法

 <span style="font-size:18px;">STL中的vector实际上是一种称为动态表的数据结构.所谓动态表,是指一种能够自动扩张和收缩的表.在开始的时候动态表预先分配一块连续的存储空间,将表中的元素存储在这块连续的空间内:如果不断地向表中插入元素,最终原来的那块存储空间可能会不够用,这时候动态表就会自动分配一块更大的存储空间,并将表中原来的元素全部复制到这块较大的空间内.</span> <span style="font

【转】【STL】vector详解

转自:http://blog.sina.com.cn/s/blog_9f1c0931010180cy.html Vectors   vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据.为了可以使用vector,必须在你的头文件中包含下面的代码:#include <vector> 构造函数.