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 :
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?