Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我的.exe文件会崩溃,但在调试和发布版本中工作正常?_C++_Visual Studio_Opencv_Image Processing_Release - Fatal编程技术网

C++ 为什么我的.exe文件会崩溃,但在调试和发布版本中工作正常?

C++ 为什么我的.exe文件会崩溃,但在调试和发布版本中工作正常?,c++,visual-studio,opencv,image-processing,release,C++,Visual Studio,Opencv,Image Processing,Release,我正在使用openCV 2.4.11技术创建一个控制台应用程序,尝试使用透视变换从单个图像创建30多个图像 我使用matt类而不是IPLimages 控制台应用程序的调试和发布版本正常工作,但project/release文件夹中的.exe文件崩溃 这种不同行为的可能原因是什么 我应该提到,发布版本也可以工作,它是唯一一个在生成几张图片后崩溃的.exe文件。这个问题可能与使用Visual Studio编译器(也可能是其他编译器)时发布和调试模式之间的内存布局不同有关 非正式地说,调试模式会在存储

我正在使用openCV 2.4.11技术创建一个控制台应用程序,尝试使用透视变换从单个图像创建30多个图像

我使用matt类而不是IPLimages

控制台应用程序的调试和发布版本正常工作,但project/release文件夹中的.exe文件崩溃

这种不同行为的可能原因是什么


我应该提到,发布版本也可以工作,它是唯一一个在生成几张图片后崩溃的.exe文件。

这个问题可能与使用Visual Studio编译器(也可能是其他编译器)时发布和调试模式之间的内存布局不同有关

非正式地说,调试模式会在存储在内存中的每个对象周围添加一定量的内存。如果你愿意的话,可以算是一种填充。由于您的越界访问(在释放模式下创建分段错误)可能会落入此填充区域,因此不会触发分段错误()


然而,这是代码中的一个bug,应该加以修复,例如,通过使用
assert

添加对空指针和越界访问的检查,此问题可能与使用Visual Studio编译器(也可能是其他编译器)时版本和调试模式之间内存布局的差异有关

非正式地说,调试模式会在存储在内存中的每个对象周围添加一定量的内存。如果你愿意的话,可以算是一种填充。由于您的越界访问(在释放模式下创建分段错误)可能会落入此填充区域,因此不会触发分段错误()


然而,这是代码中的一个bug,应该加以修复,例如,通过使用
assert

添加对空指针和越界访问的检查,此问题可能与使用Visual Studio编译器(也可能是其他编译器)时版本和调试模式之间内存布局的差异有关

非正式地说,调试模式会在存储在内存中的每个对象周围添加一定量的内存。如果你愿意的话,可以算是一种填充。由于您的越界访问(在释放模式下创建分段错误)可能会落入此填充区域,因此不会触发分段错误()


然而,这是代码中的一个bug,应该加以修复,例如,通过使用
assert

添加对空指针和越界访问的检查,此问题可能与使用Visual Studio编译器(也可能是其他编译器)时版本和调试模式之间内存布局的差异有关

非正式地说,调试模式会在存储在内存中的每个对象周围添加一定量的内存。如果你愿意的话,可以算是一种填充。由于您的越界访问(在释放模式下创建分段错误)可能会落入此填充区域,因此不会触发分段错误()


不过,这是代码中的一个bug,应该加以修复,例如,通过使用
assert

添加对空指针和越界访问的检查,我找到了一个解决方案,我只是从一开始就初始化了所有矩阵,而.exe文件现在正在工作(尽管我仍然不确定第一次把什么搞砸了)。感谢大家的贡献。

我找到了一个解决方案,我只是从一开始就初始化了所有矩阵,并且.exe文件现在正在工作(尽管我仍然不确定第一次把什么搞砸了)。感谢大家的贡献。

我找到了一个解决方案,我只是从一开始就初始化了所有矩阵,并且.exe文件现在正在工作(尽管我仍然不确定第一次把什么搞砸了)。感谢大家的贡献。

我找到了一个解决方案,我只是从一开始就初始化了所有矩阵,并且.exe文件现在正在工作(尽管我仍然不确定第一次把什么搞砸了)。感谢大家的贡献。

您正在征求猜测/意见(因此您的问题将被关闭);也就是说,仅在版本中崩溃的一个可能原因是应用程序中的未定义行为。控制台应用程序工作的内容可能重复,但是.exe文件[…]崩溃?他们不是一个整体吗?在您上次编辑后,我倾向于同意@utnapistim上面的评论。请检查
mat.empty()
是否适用于您的任何输入。如果是这种情况,当您在开发环境中执行.exe或启动项目时,您的程序可能会使用不同的路径,这会导致程序崩溃(试图访问找不到/无法读取的Mat)。@Mika,它没有解决我的问题。。。但是谢谢你的努力。你是在征求猜测/意见(因此你的问题将被关闭);也就是说,仅在版本中崩溃的一个可能原因是应用程序中的未定义行为。控制台应用程序工作的内容可能重复,但是.exe文件[…]崩溃?他们不是一个整体吗?在您上次编辑后,我倾向于同意@utnapistim上面的评论。请检查
mat.empty()
是否适用于您的任何输入。如果是这种情况,当您在开发环境中执行.exe或启动项目时,您的程序可能会使用不同的路径,这会导致程序崩溃(试图访问找不到/无法读取的Mat)。@Mika,它没有解决我的问题。。。但是谢谢你的努力。你是在征求猜测/意见(因此你的问题将被关闭);也就是说,仅在版本中崩溃的一个可能原因是应用程序中的未定义行为。控制台应用程序工作的内容可能重复,但是.exe文件[…]崩溃?他们不是吗