C++ 调试中断异常
c++ debug break exception
我正在使用 visual studio 在 C++ 中编写代码
我有以下代码
// fondamentaux C++.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{//initialisation des variables
int total{ 0 };
int tab[5]{ 11,22,33,44 };
//on double la valeur de l'index pour additionner les valeurs entre elles
(*tab) = 2;
//boucle pour additionner les valeurs entre elles
for (int i = 0; i < sizeof(tab); i++)
{
total += *(tab + i);
}
//libérationn de l'espace mémoire
delete[] tab;
*tab = 0;
//affichage du total
cout << "total = " << total << "\n"; // le total est 121
return 0;
}
理论上一切都应该工作,但是当我尝试使用本地调试器启动时 error message
如何调试?
'tab'指针指向分配在栈中而不是堆中的内存,所以函数退出后内存会自动释放。
的调用
delete[] tab;
错了。不用调用,内存会自动释放
*tab = 0;
也是错误的,因为这样定义,指针是'const'。
如果你想在堆中分配内存,你应该这样做:
int* tab = new int[5]{ 11,22,33,44 };
您的其余代码将起作用。
我正在使用 visual studio 在 C++ 中编写代码
我有以下代码
// fondamentaux C++.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{//initialisation des variables
int total{ 0 };
int tab[5]{ 11,22,33,44 };
//on double la valeur de l'index pour additionner les valeurs entre elles
(*tab) = 2;
//boucle pour additionner les valeurs entre elles
for (int i = 0; i < sizeof(tab); i++)
{
total += *(tab + i);
}
//libérationn de l'espace mémoire
delete[] tab;
*tab = 0;
//affichage du total
cout << "total = " << total << "\n"; // le total est 121
return 0;
}
理论上一切都应该工作,但是当我尝试使用本地调试器启动时 error message
如何调试?
'tab'指针指向分配在栈中而不是堆中的内存,所以函数退出后内存会自动释放。
的调用delete[] tab;
错了。不用调用,内存会自动释放
*tab = 0;
也是错误的,因为这样定义,指针是'const'。 如果你想在堆中分配内存,你应该这样做:
int* tab = new int[5]{ 11,22,33,44 };
您的其余代码将起作用。