Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2008, 14:10   #1
MAKTE
 
Регистрация: 16.05.2008
Сообщений: 3
По умолчанию До выделение памяти

Всем привет. Я знаю что можно выделить память через new и удалить соответственно delete.
например я выделил память 200 байт вот так:
int *sd = new int[200];
после этого указатель указывает на 200 интов, появляется такой вопрос, а как добавить этому

указателю например ещё 50 байт, если сделать вот так sd = new int[250]; то все данные потеряются
и будет выделен новый блок, что делать ? как до выделить память
MAKTE вне форума Ответить с цитированием
Старый 20.05.2008, 14:33   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от MAKTE Посмотреть сообщение
...........а как добавить этому указателю например ещё 50 байт...........
C new - никак. С простыми типами можно старым способом - malloc/realloc/free.
B_N вне форума Ответить с цитированием
Старый 20.05.2008, 15:50   #3
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

А уменьшить память тоже нельзя с помощью new и delete?

Кстати, что будет, если написать
*sd = new int[200];
*sd= new int[250];
Это ничего(с точки зрения памяти), что мы два раза выделили память для одной и той же перменной но удалим ее потом только один раз?
Иллидан вне форума Ответить с цитированием
Старый 20.05.2008, 16:34   #4
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

to Иллидан.

А память-то невыделилась. Просто в памяти операционная системы зарезервировала место под переменную. Но память не выделилась. Она выделится когда произойдет первое обращение к переменной. А так этим местом операционная система будет распоряжаться по своему усмотрению. Если обращения не будет. То эта память при нехватке места, вытеснится на жесткий диск.
merax вне форума Ответить с цитированием
Старый 20.05.2008, 21:34   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Иллидан, а чем по-Вашему уменьшение блока принципиально отличается от уменьшения? new и delete отличаются от обычных CRT-шных функций тем, что вызывают конструктор/деструктор.
А вот это:
Код:
*sd = new int[200];
*sd= new int[250];
в любой, даже самой простецкой книжке по программированию, уж извините, проходит под названием "Утечки памяти". И там всегда большими буквами написано: ТАК ДЕЛАТЬ НЕЛЬЗЯ.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение данных John Pepper Microsoft Office Excel 3 10.05.2008 19:09
Выделение памяти antoha.by Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2008 20:04
Выделение памяти в функции для переданных параметров LinuxUser Общие вопросы C/C++ 1 12.11.2007 19:21
выделение оперативной памяти Alar Общие вопросы Delphi 0 29.10.2006 21:56