簡體   English   中英

CPP訪問沖突錯誤

[英]CPP access violation Error

我不斷收到此錯誤: 0x40496a處的訪問沖突:寫地址0x0。 我正在使用Borland C ++。

這是我的源代碼。

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int main()
{
    char *nm;
    cout<<"\n Enter a name: ";
    gets(nm);
    cout<<"\n Name: "<<nm;
    getch();
    return 0;
}

即使我設置了char * nm = NULL或使用cin >>作為輸入,我也會遇到相同的錯誤。 請幫助,謝謝。

當您聲明nm您無需初始化它,這意味着nm的值是不確定的,它實際上並未指向任何地方(實際上,它指向一個看似隨機的位置)。 您需要使其指向足以容納您輸入的字符串的東西。

使用未初始化的變量和NULL指針會導致未定義的行為,其最常見的結果是崩潰。

要解決此問題,請使其指向已初始化的數組:

char str[20];
char* nm = str;

或動態地為字符串分配內存:

char* nm = new char[20];

甚至更好的是,不要使用字符指針作為字符串, 尤其 不要使用gets函數(這很危險,甚至已經從C標准中刪除),而應使用C ++ std::string類和std::getline函數來獲取一條線:

std::string nm;
std::getline(std::cin, nm);

或者,如果您只想獲取一個以空格分隔的單詞,請使用常規輸入運算符:

std::string nm;
std::cin >> nm;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM