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

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

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

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

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

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

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

Код:
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 в 13:22.
romantiqueamour вне форума Ответить с цитированием
Старый 27.11.2016, 13:26   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

"программа попыталась записать что-то после окончания буфера" это не утечка, а именно то, что написано.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.11.2016, 13:30   #3
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
По умолчанию

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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