Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z dynamiczną alokacją pamięci [0xBAADF00D]

Ostatnio zmodyfikowano 2019-06-26 21:38
Autor Wiadomość
dlakin95
Temat założony przez niniejszego użytkownika
Problem z dynamiczną alokacją pamięci [0xBAADF00D]
» 2019-06-26 21:10:28
Dzień Dobry,

Potrzebuję pomocy z rozwiązaniem problemu związanego z dynamiczną alokacją pamięci.

Poniżej przedstawiam przykładowy kod testowy, które jest banalnie prosty:
C/C++
uint ** test = nullptr;
test = new uint *;
* test = new uint;
** test = 2;

Z pomocą debuggera wykryłem, że linia "test = new uint*;" zwraca mi adres 0xBAADF00D (magic number).
Szukałem już w internecie na ten temat, ale wszyscy mają prosty problem z brakiem inicjalizacji zmiennych.

Problem występuje nawet w programie, który napisałem rok temu i nic w nim nie zmieniałem.

Wydaje mi się, że problemem może być system operacyjny albo środowisko programistyczne, z którego korzystam (QT).
 
Chociaż 4 miesiące temu duży program i nie miałem żadnych problemów z pamięcią.
Co ciekawsze, w pracy zainstalowałem z miesiąc temu też QT i tam też nie mam problemów z dynamiczną pamięcią.

Wrzuciłem taki kod, bo myślę, że inny kod namieszałby niepotrzebnie. A problem występuję również w tym kodzie.

Proszę o pomoc. Zabrałem się za pisanie kolejnego dużego programu, a ten problem nie daje mi spokoju.

Z góry dziękuję.

EDIT.
Dobra, nigdy nie zwracałem na to uwagi, ale przy niezaincjalizowaniu wskaźnika jest on równy 0xBAADF00D.

Dlatego mam inne pytanko.
Jak tworzę tablicę wskaźników i chcę się ustawić tymczasowy wskaźnik na początek tej tablicy, skoro mam 0xBAADF00D, to jak mam wskazać ten początek.

Poniżej przykładowy kod:
C/C++
uint ** test = new uint *[ 10 ]; // Zwraca 0xBAADF00D
uint * tempTest = * test; // Ustawienie na początek (oczywiście błąd bo to nieprawidłowy adres)
P-174840
pekfos
» 2019-06-26 21:28:54
0xBAADF00D to niezainicjalizowana pamięć po HeapAlloc(). Jesteś pewien, że patrzysz na adres zwrócony z new, a nie na wskaźnik pod tym adresem? Czy problem występuje przy każdej alokacji? Czy to jest cały kod?
C/C++
int main()
{
    typedef unsigned uint;
    uint ** test = new uint *;
    * test = new uint;
    ** test = 2;
}
Jak rozumiem to jest jedyny kod w projekcie i co dokładnie się z nim dzieje? Wysypuje się?
P-174841
dlakin95
Temat założony przez niniejszego użytkownika
» 2019-06-26 21:36:18
O kurcze, zapomniałem, że debugger może mi wskazywać adres pod wskaźnikiem domyślnie. Już sprawdzam.
P-174842
dlakin95
Temat założony przez niniejszego użytkownika
» 2019-06-26 21:38:41
Dobra, jestem idiotą przepraszam za śmieciowy temat. Już zamykam.
P-174843
« 1 »
  Strona 1 z 1