分析可能产生的原因及解决:

【内存不够】:

1,确认系统已占用内存是否正常,排除数据量过大导致的问题,此时系统内存不足导致 std::bad_alloc

【内存剩余】:

1,确认接口调用时,调用和背调接口的的参数是否一致,动态库库调用中若不一致,编译链接通过,但执行可能导致 std::bad_alloc

2,确认是否使用vector,vector超容量时会重新申请二倍内存,因为vector会将老的一块内存,完全拷贝到另一块连续容量为2倍的vector内存中,高峰时内存将时当前系统的3倍,此时可能导致 std::bad_alloc

仔细看了下写的代码,想到一个知识点:vector容器的end指向的并不是容器中最后一个元素,而是最后一个元素的下一个元素地址,所以访问了非法内存,故这里的解决方法是:如果要访问容器中最后一个元素,需要将迭代器--,即it--;或者使用.back()来访问最后一位;

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐