• 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++

VPS Starter Arubacloud
0 głosów
1,959 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ź 800 wizyt
pytanie zadane 26 stycznia 2021 w C i C++ przez karols32 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 2,908 wizyt
pytanie zadane 5 czerwca 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
1 odpowiedź 183 wizyt

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...