抛出Visual Studio C ++异常:读取访问冲突。使用命令行参数进行调试时

时间:2016-02-22 22:57:31

标签: c++ visual-studio visual-studio-2015

我在Windows 10上的Visual Studio 2015社区中使用c ++执行以下代码时收到错误异常,即使在对有相同问题的任何人进行大量搜索后,我也不知道如何修复它。 Visual Studio 2015社区已经在运行Windows 10的这台计算机上运行了很长时间,但就在上周,它在调试任何c ++程序时给了我一些问题;特别是需要使用命令行参数的程序。此代码演示了这个问题,如果有人能指出我正确的方向,请告诉我。

#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    cout << "program name : " << argv[0] << endl;
    cout << "first command argument : " << argv[1] << endl;

    cin.get();
    return 0;
}

我正在通过entering it into the debugging properties window添加命令行参数。如果我用ctrl + F5运行程序,它只会挂起并提示程序已停止工作的屏幕。然后在使用F5运行程序时,我收到this error message

&#34;抛出异常:读取访问冲突。

_First是nullptr。

如果存在此异常的处理程序,则可以安全地继续该程序。&#34;

Visual Studio指向抛出异常的位置,该异常是位于c:\ Program Files(x86)\ Visual Studio 14 \ VC \ include \文件夹内的文件iosfwd。它专门指向的块在struct char_traits中,并且抛出异常的函数指向返回行:

static size_t __CLRCALL_OR_CDECL length(const _Elem *_First)
    {   // find length of null-terminated string
    return (*_First == 0 ? 0
        : _CSTD strlen(_First));
    }

在抛出错误时,控制台输出窗口挂起在&#34;第一个命令参数:&#34;并且不显示&#34; hi&#34;。但它确实正确输出了argv [0]中指定的程序名的文件位置。

如果我从命令提示符运行Project1.exe,它将按预期运行,并将输出在行中输入时添加的命令行参数。这告诉我Visual Studio存在问题而不是我的代码。我很感激如何解决这个问题的任何帮助,因为我更喜欢使用Visual Studio来编写c ++。感谢。

1 个答案:

答案 0 :(得分:1)

我认为问题在于您要为&#39;发布&#39;设置命令行参数。配置而不是&#39; Debug&#39;一个(查看项目属性表单左上角的&#39;配置&#39;下拉列表)