20.11.2018, 17:44 [+3 UTC]
в нашей команде: 3 125 чел. | участники онлайн: 6 (рекорд: 19)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.55 (06.11.2018)

Общие новости:
24.09.2018, 16:49

Форум:
20.11.2018, 17:07

Последний вопрос:
20.11.2018, 15:30

Последний ответ:
20.11.2018, 15:57

Последняя рассылка:
20.11.2018, 11:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
06.04.2016, 20:05 »
Xgrows
Огромное спасибо!!! Все понятно и подробно описано! [вопрос № 189103, ответ № 273606]
12.04.2010, 15:48 »
geschutze
Благодарю за потраченное время (= [вопрос № 177763, ответ № 260780]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

solowey
Статус: Студент
Рейтинг: 125
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 117
Андрей Кузнецов aka Dr_Andrew
Статус: Старший модератор
Рейтинг: 55

Перейти к консультации №:
 

Консультация онлайн # 193274
Раздел: • С / С++
Автор вопроса: andrey.terekhin.96 (Посетитель)
Отправлена: 17.05.2018, 18:48
Поступило ответов: 1

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
вот такая вот ошибка на выходе из функции
extern "C" _CRTIMP int __cdecl _CrtIsValidHeapPointer(
const void * pUserData
)
{
if (!pUserData)
return FALSE;

if (!_CrtIsValidPointer(pHdr(pUserData), sizeof(_CrtMemBlockHeader), FALSE))
return FALSE;

return HeapValidate( _crtheap, 0, pHdr(pUserData) );
}

Состояние: Консультация закрыта

Ответ # 276537 от solowey (Студент)

Здравствуйте, andrey.terekhin.96!
Насколько я вижу проблема в

tvector::~tvector()
{
	//cout<<"y delete1\t";
	///	if (d_v!=NULL){
	//cout<<"y delete3\t";
	delete d_v;
	//	cout<<"y delete2\t";
	//ii=ii+1;
	//cout<<"ii="<<ii;
}

delete d_v; - тут мы пытаемся удалить массив.
По идеи удаления массива должно быть таким - delete [] d_v;


Консультировал: solowey (Студент)
Дата отправки: 22.05.2018, 10:31

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 193274

Хватов Сергей
Академик

ID: 20764

# 1

= общий = | 17.05.2018, 19:04 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

А сообщение об ошибке? Там из стандартных атрибутов только "C"
Остальное должно быть определено через #define То ли забыли что-то включить, то ли версия компилятора не совпадает.
Хотя -- extern и inline одновременно -- рискованно это. можно описать и определить порознь, даже и рядом.

andrey.terekhin.96
Посетитель

ID: 402071

# 2

= общий = | 17.05.2018, 19:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

в сообщение об ошибке пишит что произошло срабатывани точки остоновки и выкидавает сюда

andrey.terekhin.96
Посетитель

ID: 402071

# 3

= общий = | 17.05.2018, 19:37 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

// ConsoleApplication83.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <cstdlib>
#include <ctime>
#include <stdlib.h>

using namespace std;

class tvector {
	public:
	int n_vec;
	int *d_v;
	tvector add_v(int);//сложение
	void constrctor_v(int);//создание
	//tvector crossproduct();//длина
	void getelement_v();//вывод элемента
	//int getleng(int);//вывод длины
	double getmagnitude();//модуль
	tvector mult_ch(int);//умножние на число
	int mult_sk(int);//скалярное умножение
	tvector mult_vek(int);//векторное умножение
	//void exit_v();//умножение на матрицу
	void setelement(int);//ввод злемента
	void setelement_s(int); //ввод злемента рандом
	int setlengh();//ввод длины
	~tvector();//диструктор
	tvector(const tvector &tvector);//конструктор копирования
	tvector();//неявный конструктор
	tvector & operator = (const tvector & tvector);//оператор присваивания

};
void tvector::getelement_v()
 {
	 for(int i=0;i<n_vec;i++)
	cout <<"  d_i=" <<d_v[i]<<"\t";
 }
void tvector :: setelement(int n)
{	for (int i=0;i<n;i++){  
	std::cout<<"vvedite element ";
        std::cin>>d_v[i];
}
}
tvector:: tvector(const tvector & tvector)
{
 n_vec=tvector.n_vec;
 d_v=new int [n_vec];
  for(int i=0;i<n_vec;i++)
	 d_v[i]=tvector.d_v[i];
  


}
tvector::~tvector()
{
	//cout<<"y delete1\t";
///	if (d_v!=NULL){
		//cout<<"y delete3\t";
	delete d_v;
//	cout<<"y delete2\t";
	//ii=ii+1;
	//cout<<"ii="<<ii;
	}
//
tvector& tvector:: operator=(const tvector & tvector)
{
	if(this !=&tvector){
		delete[]d_v;
		n_vec=tvector.n_vec;
		d_v=new int[n_vec];
		for(int i=0;i<n_vec;i++)
	 d_v[i]=tvector.d_v[i];
	}
	else {
	}
	return *this;

}


tvector:: tvector()
{   
	int n=1;
	n_vec=1;
	d_v=new int [n];
}
	
	


void tvector :: constrctor_v(int n)
{
	delete d_v;
	d_v=new int [n];
	for (int i=0 ;i<n_vec; i++)
		d_v[i]=0;
	//setelement (i);
}
	void tvector::setelement_s(int n)
{ int x,y;
	srand (time(NULL));
	for(int i=0;i<n;i++){
     x =rand()%10;
	 y=rand()%100;
	 if (x>5) y=-y;
  //	 cout<<"y="<<y;
     d_v[i]=y;
		cout<<"matmodel.d_v[i]="<<d_v[i];
	}
}

int tvector::setlengh()
{
	cout<<"vvedite razmernost vectora ";
	cin>>n_vec;
	return n_vec;
}


class TScena

{
public:
	TScena
();
	~TScena
();
	
	//double gravitaciy();
	double atmospere();


};

TScena
::TScena
()
{
}

TScena
::~TScena
()
{
};
class integrator
{
public:
	void getmatmodel(tvector);
	tvector matmodel;
	void dorman_princ();
	double hag(double,double,tvector);

};
class TFly
{
public:
	tvector x; 
	TFly();
	~TFly();
	tvector move();


private:

};

TFly::TFly()
{

}

TFly::~TFly()
{
}

class TAircraft:TFly

{
public:
	tvector x;
	TAircraft();

	~TAircraft();
void move();

private:

};

TAircraft::TAircraft()
{

};

TAircraft::~TAircraft()
{
	delete x.d_v;
}

class TForward:TAircraft

{
public:
	TForward();
	~TForward();

	private:

};
void TAircraft::move()
{ integrator A;
A.dorman_princ();
	
cout<<"y tyt move";
}

TForward::TForward()
{
}

TForward::~TForward()
{
};

class TMissail:TFly
{
	tvector x;
	//TBins y;
	tvector move(tvector);

};


class TBins

{
public:
	TBins
();
	~TBins
();
	double navigaton();
private:

};

TBins
::TBins
()
{
}

TBins
::~TBins
()
{
}
class  TGNSS
{

};
double integrator::hag(double h0,double emax,tvector x)
{
	double h,a,e,a1,a2;
	cout<<"vvedte ohibqu\n";
	e=0.1;
	//cin>>e;
	a=pow((e/emax),(1/5));
	a1=a/0.9;

	if (5<a1)
	{
		a1=5;
	}
	if ( 0.1>a1)
		{
			a1=0.1;
    	}

		h=(h0/a1);
		cout<<"y tyt hag\n";
		cout<<h<<"\n";
return h;
}

void integrator::getmatmodel(tvector x)
{
	x.setelement_s(6);
matmodel.d_v[0]=x.d_v[3];
matmodel.d_v[1]=x.d_v[4];
matmodel.d_v[2]=x.d_v[5];
matmodel.d_v[6]=x.d_v[6];


cout<<"y tyt matmodel\n";
//return matmodel;
}
void integrator::dorman_princ()
{
	double k1,k2,k3,k4,h,h0,emax;int t;
	tvector x;
	//cout<<"vvedite nachlnay shag\n";
	//cin>>h0;
	h0=1;
	//cout<<"vvadite max ohibqu\n";
	//cin>>emax;
	emax=0.5;
    h=hag(h0,emax,x);
	cout<<h;
	matmodel.setelement_s(6);
	cout<<"y tyt doman princ";
	for(int i=0;i<=5;i++)
	{
		//out<<i;
		cout<<"y tyt k";
		k1=matmodel.d_v[i];
		cout<<"k1=";cout<<k1<<"\n";
		k2=matmodel.d_v[i]+(1/5)*h*k1;
		cout<<"k2=";cout<<k2<<"\n";
		k3=matmodel.d_v[i]+((3/40)*h*k1+(9/40)*h*k2);
		cout<<"k3=";cout<<k3<< "\n";
		k4=matmodel.d_v[i]+(44/45)*h*k1-(56/12)*h*k2+(32/9)*h*k3;
		cout<<"k4=";cout<<k4<<"\n";
		x.d_v[i]=matmodel.d_v[i]+h/6*(k1+2*k2+2*k3+k4);
		cout<<"x.d_v["<< i <<"]"<<x.d_v[i]<<"\n";
	}
	
}

int _tmain(int argc, _TCHAR* argv[])
{
	tvector x0,x;double e,emax;int t,t0,ht;
	TAircraft A;
	cout<<"vvedite nachalnoe vreme";
	cin>>t;
	cout<<"vvedete konehnoe vreme";
	cin>>t0;
	cout<<"vvedete hag";
	cin>>ht;
	while (t<t0)
	{
	A.move();
	cout<<"y tyt glav";
	x.getelement_v();
	t=t0+ht;
	}
	
	system ("pause");
	return 0;
}

• Отредактировал: Зенченко Константин Николаевич (Модератор)
• Дата редактирования: 27.05.2018, 14:33

Хватов Сергей
Академик

ID: 20764

# 4

= общий = | 17.05.2018, 19:43 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
andrey.terekhin.96:

Просто ПРОЦИТИРУЙТЕ это сообщение. А код пока не нужен. Тем более без пользы пересказывать сообщение своими словами

andrey.terekhin.96
Посетитель

ID: 402071

# 5

= общий = | 17.05.2018, 20:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

ConsoleApplication83.exe вызвал срабатывание точки останова. скопровал

andrey.terekhin.96
Посетитель

ID: 402071

# 6

= общий = | 17.05.2018, 20:28 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

и выкидывает на dbgheap.c в месте приведенном выше

Хватов Сергей
Академик

ID: 20764

# 7

= общий = | 17.05.2018, 20:55 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

на исполнении?
Тогда совсем нехороший вопрос: зачем вам локальная функция с линковкой C?
Хотите подменить системную? Так точно не выйдет.

• Отредактировал: Хватов Сергей (Академик)
• Дата редактирования: 17.05.2018, 21:22

andrey.terekhin.96
Посетитель

ID: 402071

# 8

= общий = | 17.05.2018, 21:48 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

а где у меня эти функции?

andrey.terekhin.96
Посетитель

ID: 402071

# 9

= общий = | 17.05.2018, 21:51 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

я нечего кроме того есть в программе не писал

andrey.terekhin.96
Посетитель

ID: 402071

# 10

= общий = | 17.05.2018, 21:56 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

объясните что означает место куда меня выбрасывает и почему это может быть

Хватов Сергей
Академик

ID: 20764

# 11

= общий = | 17.05.2018, 22:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
andrey.terekhin.96:

ну, покажите точную копию сообщения об ошибке. Тогда и разговор продолжится

andrey.terekhin.96
Посетитель

ID: 402071

# 12

= общий = | 17.05.2018, 22:35 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

я вам его уже два раза приводил ConsoleApplication83.exe вызвал срабатывание точки останова

andrey.terekhin.96
Посетитель

ID: 402071

# 13

= общий = | 17.05.2018, 22:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

и все

andrey.terekhin.96
Посетитель

ID: 402071

# 14

= общий = | 17.05.2018, 22:39 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

не какого номера если вы об этом

andrey.terekhin.96
Посетитель

ID: 402071

# 15

= общий = | 17.05.2018, 22:48 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

вот файл внутри скрин экрана точнее не бывает

-----
 Прикрепленный файл:  скачать (DOCX) » [131.0 кб]

solowey
Студент

ID: 400484

# 16

= общий = | 18.05.2018, 10:06 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Насколько я вижу проблема в

tvector::~tvector()
{
	//cout<<"y delete1\t";
	///	if (d_v!=NULL){
	//cout<<"y delete3\t";
	delete d_v;
	//	cout<<"y delete2\t";
	//ii=ii+1;
	//cout<<"ii="<<ii;
}

delete d_v; - тут мы пытаемся удалить массив. А почему валится пока понят не могу...

P.S. По идеи удаления массива должно быть таким - delete [] d_v;

• Отредактировал: solowey (Студент)
• Дата редактирования: 18.05.2018, 10:08

Андрей Кузнецов aka Dr_Andrew
Старший модератор

ID: 17042

# 17

= общий = | 22.05.2018, 09:42 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
solowey:

Оформите ответ? Приведя в качестве него Ваше сообщение в мини-форуме вопроса.

=====
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.21719 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.55 от 06.11.2018