usuwanie wskaźnika na void - jak?

0

taka ciekawostka i pytanie
Jako, że czyszczenie (delete) wskaźnika na void jest niezdefiniowane w c++ - jak zrobić żeby było dobrze

czy pomysł

 
char *tmpPtr = reinterpret_cast<char *> ptrToVoid;
delete tmpPtr;

jest dobry?

1

Zależy od tego jak został przydzielony.

0

Nie wazne co to by bylo, ale reinterpret_cast nie jest dobre. Korzystanie ze wskaznikow na void tez nie jest dobre.

0
n0name_l napisał(a):

Nie wazne co to by bylo, ale reinterpret_cast nie jest dobre. Korzystanie ze wskaznikow na void tez nie jest dobre.

Dzięki za odpowiedź

ale to nie ważne - dobre nie dobre
jest taki problem - usunięcie wskaźnika na void - jak to zrobić tak żeby było dobrze

1

Nie istnieje uniwersalna poprawna odpowiedź na twoje pytanie.

1

Widze, ze bedziesz torturowac tym pytaniem cala spolecznosc. Sila rzeczy musisz znac sposob utworzenia tego wskaznika, inaczej zapomnij o uzywaniu delete, np. mozna go stworzyc mniej wiecej tak:

int* x = new int(3);
void* v = (void*)x;

Rzutujesz to z powrotem na int i delete zadziala normalnie, ale co jesli bedzie utworzony w ten sposob:

int x = 3;
void* v = (void*)&x;

Jeszcze bardziej sie cala sprawa komplikuje jesli mamy tablice, obiekty wlasne, etc. Dlatego tez uzywanie tego typu egzotycznych wynalazkow C++ nie jest wskazane.

0

void* widziałem w programach pisanych w C. Wykorzystując POSIXowe wątki dane przekazujemy tam przez parametr typu void*, potem rzutujemy i mając odpowiedni typ zwalniamy pamięć.

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