Problem z realokacją pamięci tablicy unsigned long long [C++]
Ostatnio zmodyfikowano 2017-09-30 13:47
dlakin95 Temat założony przez niniejszego użytkownika |
Problem z realokacją pamięci tablicy unsigned long long [C++] » 2017-09-30 13:19:41 Witam, mam problem z kodem. void ConfigDataPosition::addNewRecentPos( unsigned long long newPos ) { ushort numbOfRecentsPos = *( parent->getNumbOfRecentProjects() ); unsigned long long * temp = new unsigned long long[ numbOfRecentsPos ]; * temp = newPos; for( uint i = 1; i < numbOfRecentsPos; i++ ) *( temp + i ) = *( recentProjectsPosition + i - 1 ); delete[] recentProjectsPosition; recentProjectsPosition = temp; }
Program otrzymuję nową wartość, którą ma umieścić na początku tablicy (recentProjectsPosition jest wskażnikiem na unsigned long long). Reszte z poprzedniej tablicy ma przepisać dalej. Tablica jest tworzona i wykorzystywana w innej części kodu, więc z całą pewnością działa. Co najważniejsze, po pierwszym uruchomieniu i dodaniu nowej wartości program działa. Za drugim razem wywala program na <b> delete []recentProjectsPosition </b>. Więc stara tablica jest usuwana, a nowy wskaźnik jest przekazywany do (recentProjectsPositon). Z góry dzięki za pomoc. EDIT. Chyba znalazłem problem. Jak coś to jeszcze napiszę. |
|
Kinexity |
» 2017-09-30 13:30:18 Jeżeli dobrze rozumiem problem, to czy nie łatwiej byłoby użyć std::vector? |
|
dlakin95 Temat założony przez niniejszego użytkownika |
» 2017-09-30 13:33:40 Można, ale przy tak prostych rzeczach jestem przyzwyczajony samemu sobie to opisać.
|
|
dlakin95 Temat założony przez niniejszego użytkownika |
» 2017-09-30 13:47:17 Dobra. Temat do zamknięcia.
Problemem okazała się inna część kodu.
W skrócie, wcześniej miałem zwiększaną wartość w innej części kodu, dlatego tu nie zwiększałem tablicy. Następnie zmieniłem kod tak, że najpierw wywoływałem tą funkcję i zwiększałem ilość. A jak widać w tej funkcji tego nie robiłem. |
|
« 1 » |