我有一些C++代碼,但我不知道是什麼。例如的目的,讓我們說這是:cl C++在讀取無法訪問的內存時發生運行時錯誤
//main.cpp
#include<iostream>
using namespace std;
int T[100];
int main()
{
for(int i = 0; i < 100; ++i)
T[i] = i;
int x;
cin>>x;
cout<<T[x]<<endl;
return 0;
}
我被cl /O2 /nologo /EHsc main.cpp
編譯它,並通過main < inFile.in
運行。假設inFile.in內容是一個數字500
和新行。輸出是一些隨機數,因爲程序讀取地址T+500
下的內存並進行打印。 我想在這種情況下得到運行時錯誤(任何檢查的可能性都是這樣發生的)。這可能沒有訪問main.cpp? 具體來說,我在ASP.Net MVC應用程序中通過C#中的Process類以編程方式運行所有這些。我想檢查程序是否拋出異常/讀取未保留的內存等。
你可以使用'std :: vector'或'std :: array',它提供了越界檢查,並且如果它在運行時發生,將會拋出異常。 –
您需要確保x在0到99之間,否則您的程序將會有未定義的行爲。 – drescherjm
請不要戀人分數,因爲這是完全有效的問題與在最後的最重要的部分 –