![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#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 Аккуратно используйте динамику. Грамотно подчищайте все хвосты. |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 3rd July 2025 - 18:27 |