vector的size函数返回值突然异常

debug版本能正常运行,但release版本就出现这个异常

img

img


前面是只给了10+1个的元素个数的

img

更详细的有关代码可以看我另一个问题release版读取位置 时发生访问冲突-编程语言-CSDN问答

感谢include_iostream_的指导

img

(看起来在手写CV神经网络?)
debug和release版本有哪些差异呢?
提示以下几点:
1、单线程程序在目标代码完全一致的情况下不可能出现多次运行下的行为差异,这是编译器保证的,肯定不是简单的逻辑问题。
2、ifdef、ifndef等预编译指令(就是井号开头的指令)会导致完全相同的代码的目标代码不同。
3、编译选项的不同会导致目标代码产生差异,但除非你使用debugger打断点,否则这种差异应该非常难以捕捉才对。
4、多线程程序会导致一些行为差异。由于release版本下编译器会进行优化,不排除一些原本能勉强保证线程间同步的东西被优化掉了。例如,可能debug版本下,某一事件的发生间隔是毫秒级,另一线程有充分时间处理,就好像线程同步了一样;而release版本下降到了百分之一毫秒级,导致另一线程来不及处理,原本勉强维持的同步也崩溃了。
因此我需要知道:
1、你的代码是否存在除了include和define之外的预编译指令?
2、你的代码是否是多线程的?(尽管不是太显眼,一般而言有回调函数的程序一定是多线程的)
此外提出一个猜测:你的代码可能访问到了没有正确构造的对象。可能的原因很多,多线程的时间效应是其中一个。

(大概算吧)
1.有以下这些,不懂是否是原因呢?

img

img

img

img

2.是单线程的。不过前边用来截图的部分(SC.cpp和那两个头文件)是我从这生搬的C++实现屏幕截图的方法_未晚的专栏-CSDN博客,不排除里面有多线程的可能(学识尚浅。。。)