Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

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

Ответ
 
Опции темы
Старый 27.11.2016, 14:16   #1
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
Репутация: 10
По умолчанию Возможно утечка памяти

Здравствуйте, не понимаю, утечка ли памяти это, или что-то другое. Программа имеет следующий вид. Почему так всё сложно - я просто пытаюсь привыкнуть к понятию функции и работы с ними. Суть следующая: вставить имеющийся элемент в позицию со своим значением.

Код:

void zapoln(int* mas, int kol);
void vivod(int* mas, int kol);
void position(int* mas, int* kol, int poz, int zn);
void main(){
	setlocale(LC_ALL, "Russian");
	int N, num, z;

	cout<<"Введите количество элементов, номер позиции и её значение: ";
	cin>>N>>num>>z;
	int *p = new int[N]; 
	
	zapoln(p, N);
	vivod(p, N);
	position(p, &N, num, z);
	vivod(p, N);

	delete [] p;
	system("pause");
}
void position(int* mas, int* kol, int poz, int zn){
	for(int i = 0; i < *kol; i++)
	{
		if(i == poz)
		{
			for(int j = *kol-1; j>=poz; j--)
				mas[j+1] = mas[j];
			mas[i] = zn;
			*kol += 1;
		}
	}
}
void vivod(int* mas, int kol)
{
	for(int i = 0; i<kol; i++)
		cout<<mas[i]<<endl;
}
void zapoln(int* mas, int kol){
	for(int i = 0; i < kol; i++)
			mas[i] = i+5;
}

В конце выполнения всего (а всё правильно в вычислениях и выводе выполняется) мне выдаётся ошибка CRT detected that the application wrote to memory after end of heap buffer
На сколько я знаю английский, мне говорят о том, что программа попыталась записать что-то после окончания буфера... Но хоть убей, не могу понять почему. Открыл динамическую память и в самом конце её закрыл. Вроде всё логично. Помогите, пожалуйста, с пониманием проблемы. Заранее большое спасибо!)

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 27.11.2016 в 14:22.
romantiqueamour вне форума   Ответить с цитированием
Старый 27.11.2016, 14:26   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 13,979
Репутация: 2784

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Утечка это когда new/malloc без delete/free. Никаких ошибок от этого не будет. (ну только если программа долго работает/выделяет много памяти и когда-то она закончится)

"программа попыталась записать что-то после окончания буфера" это не утечка, а именно то, что написано.
Alex11223 на форуме   Ответить с цитированием
Старый 27.11.2016, 14:30   #3
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
Репутация: 10
По умолчанию

Спасибо огромное)) только только до меня дошло)) что я выделяю память на N элементов, а потом прибавляю ещё один!) естественно, на него память не выделена!)
romantiqueamour вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
утечка памяти polin11 Общие вопросы C/C++ 10 18.08.2015 19:12
Утечка памяти OmegaBerkut Общие вопросы Delphi 21 09.04.2015 23:12
Утечка памяти :( batnik.com C++ Builder 1 09.05.2013 18:09
Утечка памяти Juffin Общие вопросы Delphi 3 02.11.2010 13:11
утечка памяти в С++ vengo Общие вопросы C/C++ 9 10.06.2008 21:24




01:11.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru