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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.12.2010, 01:36   #1
fosder
Новичок
Джуниор
 
Регистрация: 08.12.2010
Сообщений: 1
Стрелка

Столкнулся с проблемой
ОС Windows инициировала точку останова в лаба2 задание1.exe.

Это может быть вызвано повреждением кучи и указывает на ошибку в лаба2 задание1.exe или в одной из загруженных им DLL.

Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит лаба2 задание1.exe

Выведенное на экран окно содержит дополнительные данные для диагностики ошибки.

Код:
#include "stdafx.h"
#include "iostream"
#include "malloc.h"
using namespace std;

int kol=5, pos;


void see_all (short *a);
void type_one (short *a);
int search6 (short z);
int paste (short *a, int pos);

int main(int argc, char* argv[])

{
		
	int i;
	short *num = (short*) malloc(kol*sizeof(short));

	num[3]=3;
	num[4]=5;

	see_all(num);
	
	
	cout << "\n\n\n Part2 \n\n\n";

	for (i=0; i<kol; i++)
		if (!search6(num[i]))
		{	
			if ( paste(num, i++) )
			{
				cout << "  Ошибка!  ";
				return 1;
			}
			
		}

	see_all (num);

	cin.get();
	cin.get();
	return 0;
}

void see_all (short *a)
{
	for (int i=0; i<kol; i++)
		cout << a[i] << " ";
}

void type_one (short *a)
{
	cout << " Please input the position: ";
	cin >> pos;
	cout << " Type the num: ";
	cin >> a[pos];
}

int search6 (short z)
{
	short y=z;
	
	while (y)
	{
		if (y%10 == 6)
			return 1;
		y = y / 10;
	}

	return 0;
}

int paste (short *a, int pos)
{
	kol++;
	
	a = (short*)realloc (a, (kol)*sizeof(short));

	if ( a != 0 )
	{
		for (int j=kol-2; j>pos; j--)
			a[j+1]=a[j];
		return 0;
	}
	else
		return 1;
		
}
Насколько я понимаю, проблема в функции paste, которая изменяет размер динамического массива.
Использую Visual studio 2008, windows 7 x64
В комбинации VS6 winXP все работает
Прошу помочь



срочно требуется помощь! =)
поставил VC++ 2010 express -- также не работает!

Последний раз редактировалось artemavd; 22.12.2010 в 03:23.
fosder вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си - Выделение кучи -> инициализация указателя -> запись массива Renat060888 Общие вопросы C/C++ 3 22.11.2010 19:31
Проблема с переполнением кучи. NSvirus Паскаль, Turbo Pascal, PascalABC.NET 4 14.11.2010 21:57
Очередь с приоритетами на базе кучи Nastenova Помощь студентам 1 15.06.2010 16:11
зашифрованный файлик - повреждение max38934 Общие вопросы Delphi 4 30.05.2009 13:16