Visual Studio 2015 debuger i delete[]

0

Hej, mam pewien problem.
Uczę się C++, aktualnie jestem na temacie "Klasy a dynamiczny przydział pamięci".

Mam problem taki, że z programem zawsze dzieje się coś złego gdy dochodzi do wywołania destruktora :

StringBad::~StringBad()
{
	num_strings--;
	std::cout << "\"" << str << "\" - obiekt usuniety, sa jeszcze " << num_strings << ".\n";
	delete[] str;
}

W momencie jego wywoływania w programie wyświetlają mi się dziwne komunikaty :
user image

Najpierw jest pierwszy, potem po kliknięciu continue jest drugi a potem jest ciągle trzeci tylko że z różnymi adresami szesnastkowymi.
Jakiś pomysł? Ogólnie pojawia się to zawsze gdy program dochodzi do wywołania delete[] str;

EDIT
Kod całej klasy nie ma znaczenia, bo dla testu napisałem taki program :

#include <iostream>
int main()
{
	char * str;
	str = new char[5];
	str = "helo";
	std::cout << str;
	delete[] str;
	return 0;
}

I również mam takie błędy :/

EDIT2
Rozwiązałem problemem było przypisanie znaków do str komendą
str = "helo";
Po użyciu strcpy_s wszystko jest okej

Swoją drogą dlaczego nie można użyć takiego przypisania jakiego ja użyłem?

1

Tutaj ->>> str = "helo";
Nadpisujesz pointer wskazujący na dynamiczną tablice, adresem jakiegoś miejsca w RDATA, gdzie jest przechowywany ten napis. To miejsce jest read-only, więc wywala Ci exception, że nie można tego usunąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1