Witam. Mam mały problem.
Mam taki kod:
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
int main(){
string odpA, odpB, odpC;
odpA="Lek przed grami losowymi";
odpB="Lek przed ciemnoscia";
odpC="Lek przed piatkiem trzynastego";
cout<<"Co to jest nyktofobia? "<<endl;
cout<<"A) "<<odpA<<endl;//Wyswietlamy trzy mozliwosci do wyboru
cout<<"B) "<<odpB<<endl;
cout<<"C) "<<odpC<<endl;
char odpowiedz;
cout<<"Twoja odpowiedz (A, B, C): ";
cin>>odpowiedz;//Pobieramy odpowiedz od uzytkownika
string *odpowiedzUzytkownika=0;//Wskaźnik, który będzie wskazywał wybraną przez użytkownika odpowiedź
switch(odpowiedz){
case 'A':
odpowiedzUzytkownika=&odpA;//Ustawiamy wskaźnik na odpowiedź
break;
case 'B':
odpowiedzUzytkownika=&odpB;
break;
case 'C':
odpowiedzUzytkownika=&odpC;
break;
default:
cout<<"Nieprawidłowy wybor"<<endl;
break;
}
//teraz używamy wskaźnika do wyswietlenia wybranej przez użytkownika odpowiedzi
cout<<"Twoja odpowiedz: "<<*odpowiedzUzytkownika<<endl;
delete odpowiedzUzytkownika;
odpowiedzUzytkownika=0;
getch();
return 0;
}
Z tego co czytałem w jednym z kursów, to jeżeli chce się zwolnić pamięć zajmowaną przez wskaźnik, to trzeba napisać
delete wskaznik;
wskaznik=0;
I tu moje pytanie.
W powyższym kodzie przecież zwalniam pamięć. Więc czemu gdy użytkownik poda odpowiedz A, B, lub C, po naciśnięciu klawisza Enter, wyskakuje mi okienko systemowe Program testowy.exe przestał działać?
W szczegółach błędu mam coś takiego:
Podpis problemu:
Nazwa zdarzenia problemu: APPCRASH
Nazwa aplikacji: testowy.exe
Wersja aplikacji: 0.0.0.0
Sygnatura czasowa aplikacji: 5280a2cb
Nazwa modułu z błędem: StackHash_0f5d
Wersja modułu z błędem: 6.1.7600.16915
Sygnatura czasowa modułu z błędem: 4ec4b137
Kod wyjątku: c0000374
Przesunięcie wyjątku: 00000000000c6ae2
Wersja systemu operacyjnego: 6.1.7600.2.0.0.256.1
Identyfikator ustawień regionalnych: 1045
Dodatkowe informacje 1: 0f5d
Dodatkowe informacje 2: 0f5db380c0da1ad59d68ac3678075ed1
Dodatkowe informacje 3: 89f2
Dodatkowe informacje 4: 89f2bcfdfb7509c610387b046e2f292f
Przeczytaj w trybie online nasze zasady zachowania poufności informacji:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0415
Jeśli zasady zachowania poufności informacji w trybie online nie są dostępne, przeczytaj nasze zasady zachowania poufności informacji w trybie offline:
C:\Windows\system32\pl-PL\erofflps.txt
Prosiłbym o wytłumaczenie.
Przecież jeśli nie zwolnię pamięci, to program będzie podobno zabierał coraz więcej pamięci, bo nie będzie ona zwalniana.