Есть ли способ проверить, был ли массив полностью освобожден, и ничего не осталось? Valgrind только говорит, что есть некоторые разборчивые блоки. Отладчик или что-то в этом роде сделано именно для этого?Проверьте, освобожден ли массив/2d массив/массив структур/массив строк
1
A
ответ
2
Итак, нет, нет способа узнать, освободили ли вы все, просто взглянув на указатели. Вы должны знать свою структуру данных и алгоритм и знать, когда выпустить выделенную память.
В Windows (MSC) Я использую следующую команду для проверки в конце, когда программа завершается, если я освободила всю выделенную память:
// Check heap upon exit: all memory freed and not corrupted?
#include <crtdbg.h>
_CrtMemState memStateStart, memStateEnd, memStateDelta;
int WinMain(...
{
...
// Make a checkpoint of the heap's state so we can later check the heap is still OK
_CrtMemCheckpoint(&memStateStart);
ghMainWnd = CreateWindow( // Create the app. main window
...
);
...
}
...
WndProc(hWnd, msg,...)
{
...
case WM_CLOSE:
// Check the heap
_CrtMemCheckpoint(&memStateEnd);
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_WNDW);
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_WNDW);
if (_CrtMemDifference(&memStateDelta, &memStateStart, &memStateEnd))
_CrtMemDumpStatistics(&memStateDelta);
_CrtDumpMemoryLeaks();
DestroyWindow (hWnd);
return (0);
Смежные вопросы
- 1. libXML: проверьте, отсоединен ли узел и освобожден ли он
- 2. Проверьте, освобожден ли ключ после нажатия C# XNA
- 3. Проверьте, нет ли строк у строк нет
- 4. Как определить, освобожден ли tfilestream?
- 5. Проверьте, задано ли поле из массива строк
- 6. javascript - проверьте, существует ли таблица строк
- 7. Проверьте, есть ли список строк в элементе
- 8. Проверьте, находится ли подстрока в списке строк?
- 9. Проверьте, нет ли строки в ArrayList строк
- 10. Проверьте, не увеличивается ли число строк, Excel
- 11. Проверьте, существует ли набор строк в Production
- 12. Проверьте, является ли String только разрывы строк.
- 13. Будет ли освобожден связанный объект автоматически?
- 14. Проверка, может ли указатель быть освобожден
- 15. Как определить, был ли объект C++ освобожден?
- 16. Как проверить, освобожден ли объект в Delphi
- 17. проверить, освобожден ли пинч в UIPinchGestureRecognizer
- 18. Проверьте, есть ли список «частичных» строк в списке полных строк.
- 19. Проверьте, есть ли прослушивание делегата?
- 20. Как преобразовать коврик в массив2d <rgb_pixel>?
- 21. Объект освобожден - почему? где?
- 22. Обнаружение, когда NSView освобожден
- 23. освобожден скрипт с hasOwnProperty
- 24. Есть ли способ проверить, освобожден ли NSManagedObject или нет?
- 25. Определите, когда UITableViewCell освобожден
- 26. Просмотр полностью не освобожден
- 27. Когда этот объект освобожден?
- 28. ViewController неожиданно освобожден
- 29. Файл не освобожден
- 30. CCParticleSystemQuand не освобожден
Что вы имеете в виду? Для двумерного массива требуется один «свободный», то же самое для 'struct {...} x []'. Остальное вам уже сказал Valgrind. Вы действительно должны знать, где/который выделил блокировать вас 'free'd. И отладчик сделан для - хорошо отладки ... – Olaf
@Olaf есть версия Windows «Valgrind», я просто спрашиваю? – Michi
@ user3706129 Вы имеете в виду указатель ...? – Michi