![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
![]() Пользователь ![]() ![]() Группа: Posters Сообщений: 139 Регистрация: 4.7.2006 Из: http://mobithings.ru Пользователь №: 853 ![]() |
Каким образом выделить динамическую память массиву?
-------------------- |
|
|
![]() |
Гость_Shweed_* |
![]()
Сообщение
#2
|
Guests ![]() |
Ваууу интересная тема.
![]() Такс начнем: Для выделения небольших массивов (и даже бальших) юзать malloc, realloc и следовательно освобождение памяти выполнять через free. unsigned int size = 10; char *s = (char*) malloc (size); (Далее выполняем операции над строками!) ..... free (s); Минусы ... не вызывают конструкторы классов. Если выделять память в стиле new, то очень удобно по сути вызывают конструкторы классов и др. Минус ... нельзя перевыделить память .... (точнее довыделить). есть одно предложение через reallloc .... но это чревато утечками памяти. Ибо эти функции включают всебя разные API функции для работы с памятью. (malloc и realloc - AllocMemory, а NEW использует HeapAlloc). Так что вывод не пользоватсо! А для выделения огромнеших массивов памяти лучше разабатывать свой класс для работы с динамичской памятью .. на основе VirtualAlloc. (сырцов в инете пално.) Постом выше заметил такое .... unsigned int size = 10; char *s = (char*) malloc (size); s = "строка." ууууу неправильно! ))) ибо выделенная память потеряется. Так как s начнет указывать на другой по сути участок памяти. (будет утечка!) PS Аккуратно используйте динамику. Грамотно подчищайте все хвосты. |
|
|
Гость_mix_* |
![]()
Сообщение
#3
|
Guests ![]() |
Для выделения небольших массивов (и даже бальших) юзать malloc, realloc и следовательно освобождение памяти выполнять через free. Я чесно говоря не совсем понял, ты за malloc, realloc или против. Просто если уж работать в С++ (а не Си), то лучше использовать стиль программирования С++, который подрузамивает, коль уж нужна динамическая панять, используй new и delete. Но вообще использовать new и delete все же лучше тогда когда это реально нужно (ну там лабы делать "Работа с динамической памятью" ![]() Для выделения небольших массивов (и даже бальших) юзать malloc, realloc и следовательно освобождение памяти выполнять через free. unsigned int size = 10; char *s = (char*) malloc (size); (Далее выполняем операции над строками!) ..... free (s); Минусы ... не вызывают конструкторы классов. Чувак, реально незнал, пасиба за инфу |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 3rd July 2025 - 17:45 |