2013-06-18 12 views
6

Pracuję nad aplikacją konsoli VC++.Błąd wyjątku c0000005 w VC++

Ta aplikacja wysyła plik z folderu Appdata \ Roaming na pewien czas.

co się dzieje, otrzymuję ten błąd awarii:

Problem signature: 
Problem Event Name: APPCRASH 
Application Name: App.exe 
Application Version: 1.0.0.2 
Application Timestamp: 51c02fa8 
Fault Module Name: PCMeter.exe 
Fault Module Version: 1.0.0.2 
Fault Module Timestamp: 51c02fa8 
Exception Code: c0000005 
Exception Offset: 000069eb 
OS Version: 6.1.7601.2.1.0.256.48 
Locale ID: 1033 
Additional Information 1: 0a9e 
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 
Additional Information 3: 0a9e 
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789 

Czy ktoś może mi pomóc rozwiązać ten problem

+3

Dalej; nie jesteśmy boskościami na tej stronie. Potrzebujesz więcej wskazówek. – Bathsheba

+3

'c0000005' jest kodem naruszenia zasad dostępu. Musisz przestać odwoływać się do pamięci, która nie jest odpowiednia, aby to naprawić. –

+0

Dzięki, Am odczytuje cały plik XML za pomocą char txt [10000] i przekazuje go do wartości CString w celu zapisania na serwerze. Czy to oznacza naruszenie pamięci? – user1465461

Odpowiedz

24

kod wyjątku c0000005 jest kod do naruszenia zasad dostępu. Oznacza to, że twój program uzyskuje dostęp (odczyt lub zapis) do adresu pamięci, do którego nie ma uprawnień. Najczęściej jest to spowodowane:

  • Uzyskiwanie dostępu do nieaktualnego wskaźnika. Jest to dostęp do pamięci, która została już zwolniona. Należy pamiętać, że takie nieaktualne dostępy do wskaźników nie zawsze powodują naruszenia praw dostępu. Tylko wtedy, gdy menedżer pamięci zwrócił pamięć do systemu, otrzymasz naruszenie dostępu.
  • Odczytywanie końca tablicy. Dzieje się tak, gdy masz tablicę o długości N i uzyskujesz dostęp do elementów o indeksie >=N.

Aby rozwiązać problem, należy wykonać pewne debugowanie. Jeśli nie masz możliwości wystąpienia błędu w debugerze na komputerze programisty, powinieneś otrzymać plik zrzutu awaryjnego i załadować go do debuggera. To pozwoli ci zobaczyć, gdzie w kodzie wystąpił problem i mam nadzieję, że doprowadzisz cię do rozwiązania. Będziesz potrzebował symboli debugowania skojarzonych z plikiem wykonywalnym, aby zobaczyć znaczące ślady stosu.