IPB

Здравствуйте, гость ( Вход | Регистрация )

> Выделение динамической памяти, на С++
Nom@d
сообщение Dec 18 2006, 18:30
Сообщение #1


Пользователь
**

Группа: Posters
Сообщений: 139
Регистрация: 4.7.2006
Из: http://mobithings.ru
Пользователь №: 853



Каким образом выделить динамическую память массиву?


--------------------
Вернуться к началу страницы
 
+Цитировать сообщение
 
Создать новую тему
Ответов
Гость_Shweed_*
сообщение Aug 30 2007, 18:32
Сообщение #2





Guests






Ваууу интересная тема. smile.gif)) Динамика .. мммм...

Такс начнем:

Для выделения небольших массивов (и даже бальших) юзать 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
Аккуратно используйте динамику. Грамотно подчищайте все хвосты.
Вернуться к началу страницы
 
+Цитировать сообщение

Сообщений в этой теме


ОтветитьСоздать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 3rd July 2025 - 18:27