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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2012, 14:56   #1
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию Освобождение памяти

Выделяется память под динамический массив. Дальше происходит ввод, а потом нужно очистить не задействованную выделенную память.
Код:
#include "stdafx.h"
#include "stdlib.h" 
#include "conio.h"

int main() 
{ 
int *ms,n,i; 
	n=999;
ms = (int *)malloc(n * sizeof(int)); 

if(ms == NULL) 
	{printf("Не удалось выделить память."); }

n=0;

for(i=0;i<999;i++)
	{
	scanf("%d",&ms[i]);
	if(ms[i]==999) break;
	n++;
	}

for( i = 0;i < n;i++) 
	{printf("%d", ms[i]);}

getch();
free(ms); 
}

Последний раз редактировалось Stilet; 27.10.2012 в 17:09.
millepetrozza вне форума Ответить с цитированием
Старый 27.10.2012, 15:05   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Так у тебя она освобождается

Код:
free(ms);
если надо освободить ту в которой нечего не хранится после ввода, то наверное можно сделать так:
сделать подсчет введенных данных, затем выделить еще раз память под размер введенных данных, копировать, ну и удалить старый указатель. Может есть способы и проще, сказал то что первое пришло в голову))))
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 27.10.2012 в 15:10.
kineziz вне форума Ответить с цитированием
Старый 27.10.2012, 15:10   #3
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию

В самом конце, и освобождается полностью, а дао просто освободить выделенную, но не задействованную при вводе массива
millepetrozza вне форума Ответить с цитированием
Старый 27.10.2012, 15:12   #4
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Ну попробуйте как я написал сделать
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 27.10.2012, 15:13   #5
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от kineziz Посмотреть сообщение
Так у тебя она освобождается

Код:
free(ms);

сделать подсчет введенных данных, затем выделить еще раз память под размер введенных данных, копировать, ну и удалить старый указатель.
За такой способ мой препод убьет меня и, извиняюсь, обос**т))
millepetrozza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
освобождение памяти Homa_1983 Общие вопросы C/C++ 7 31.08.2013 14:36
Освобождение памяти Seran4ek Общие вопросы Delphi 7 21.12.2009 18:07
Освобождение памяти PUH Помощь студентам 1 22.11.2009 17:14
Освобождение памяти AlexandrSid Общие вопросы Delphi 3 02.02.2009 13:45
Освобождение Памяти в Си volotsky Помощь студентам 2 16.12.2008 22:36