• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tablica Dynamiczna w klasie i jej zmiana rozmiaru C++

Object Storage Arubacloud
0 głosów
1,988 wizyt
pytanie zadane 24 lutego 2018 w C i C++ przez Programeł Gaduła (3,500 p.)
edycja 24 lutego 2018 przez Programeł

Witam

Mam problem ze zmianą rozmiaru tablicy dynamicznej za pomocą metody Zmien_rozm();

Render.hpp:

class Render
{
private:
    int l;
    
    char* tab = new char[2];  

    void Zmien_rozm(std::string str);

public:
    Render(int leng);
    ~Render();

    void Add() {};
    void Subtract() {}; 
};

funkcje.cpp:

void Render::Zmien_rozm(std::string str)
{
    if(str == "Tree") { 
        delete [] tab;
        char* tab = new char[5];  
    }
} 

Metode wywołuje w konstruktorze:

Render::Render(int leng) 
{
    l=leng; 
    Zmien_rozm("Tree"); 
}

 

2 odpowiedzi

+1 głos
odpowiedź 24 lutego 2018 przez obl Maniak (51,280 p.)
A jak wywołujesz tą metodę i z jakiego miejsca. Metoda ta jest prywatna więc nie możesz jej wywołać poza klasą.
komentarz 24 lutego 2018 przez Programeł Gaduła (3,500 p.)
zapomniałem o tym napisać.

Już poprawiam :P
+1 głos
odpowiedź 24 lutego 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)
char* tab = new char[5];

Przypisujesz alokowaną pamięć do lokalnego wskaźnika, zamiast do tego w obiekcie.

komentarz 25 lutego 2018 przez Paweł Dymek Bywalec (2,300 p.)
Dokładnie, a rozszerzając myśl kolegi Qwerty96 usuwasz tablice prawidłowo, a następnie tworzysz wewnątrz metody nową zmienną typu wskaźnik na typ char, która przysłania tą z klasy. tab w klasie zostało usunięte, ale nic więcej nie zostało tam przypisane, przypisałeś do tab w metodzie klasy, które jak zakładam przestało istnieć po wykonaniu się tej metody, a pamięć nie została zwolniona.

Usuń char* i będzie dobrze :)

Podobne pytania

0 głosów
1 odpowiedź 846 wizyt
pytanie zadane 26 stycznia 2021 w C i C++ przez karols32 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 2,959 wizyt
pytanie zadane 5 czerwca 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
1 odpowiedź 204 wizyt

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...