28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739

почему выдает ошибку

11.03.2012, 14:48. Показов 939. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include  <math.h>
#include <iomanip>
#include <string.h>
using namespace std;
 
struct MARSH
{
  char nac_punkt[100];
  char konec_punkt[100];
  int   nomer;
  int   dlina;
};
void  main(void)
{
     FILE *f1;
    setlocale(LC_ALL,"Russian");
if((f1=fopen("2.dat", "rb+"))==NULL) {
    printf("Ошибка при открытии файла.\n");
    exit(1);
  }
for(int i=0;i<5;i++)
 
       {
           MARSH *pmarsh=new MARSH[i];
            fread(&pmarsh[i],sizeof(MARSH),1,f1);
 
            cout<<i+1<<"-aя запись"<<endl;
            cout<<"начальный пункт  "<<pmarsh[i].nac_punkt<<endl;
            cout<<"название конечного пункта  "<<pmarsh[i].konec_punkt<<endl;
            cout<<"длина  "<<pmarsh[i].dlina<<endl;
            cout<<"номер   "<<pmarsh[i].nomer<<endl;
    
    
}
 
 
 
       fclose(f1);
    system("PAUSE");
 
}
тут я хочу выделять память для структуры считываю с файла и вот
fread(&pmarsh[i],sizeof(MARSH),1,f1);
в pmarsh[i] все считываеться хорошо в отладчике смотрю а следущая строчка кода выбивает повреждена куча
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2012, 14:48
Ответы с готовыми решениями:

Почему выдает ошибку?
Вот исходный код: // ConsoleApplication1.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; ...

Почему не выдает ошибку?
Вопрос может показаться странным. Но почему for(int *i=min; i&lt;min2; ++i){ эта строка не выявлет ошибку. Ведь получилось значению...

почему выдает ошибку
#include &lt;iostream&gt; #include &lt;cmath&gt; int main() { const int SIZE=10; int a={0,1}, b={0,1}; unsigned int...

4
Полярный
 Аватар для dimcoder
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
11.03.2012, 14:54
C++
1
2
for(int i=0;i<5;i++)
   MARSH *pmarsh=new MARSH[i];
А delete не сделали ни разу.
C++
1
2
3
4
for(int i=0;i<5;i++)
   MARSH *pmarsh=new MARSH[i];
//...
delete [] pmarsh;
0
28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739
11.03.2012, 15:05  [ТС]
оно ругаеться сразу же в первом прохождении цикла может быть я не правильно выделяю память

Добавлено через 28 секунд
вот сама ошибка ОС Windows инициировала точку останова в 1.exe.

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

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

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

Добавлено через 1 минуту
и выкидывает на эту строчку десасемблера
77A237DD int 3

Добавлено через 7 минут
может поможете мне кажеться что то с читыванием там просходит
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
11.03.2012, 15:08
sergeu90, 1 проблема с выделением памяти.
2 трындец с считыванием. не сможете так считать. либо читать по полю, либо использовать сериализацию.
0
28 / 29 / 5
Регистрация: 17.10.2009
Сообщений: 739
11.03.2012, 15:32  [ТС]
а как правильно сделать ?

Добавлено через 40 секунд
в отладчике я смотрел считывало в указатель нормально и поля там были считаны как мне надо

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include  <math.h>
#include <iomanip>
using namespace std;
 
struct MARSH
{
  char nac_punkt[100];
  char konec_punkt[100];
  int   nomer;
  int   dlina;
}*p1;
void  main(void)
{
     FILE *f1;
f1 = fopen("2.dat","wb");
 
    setlocale(LC_ALL,"Russian");
    int count;
    cout<<"Cколько записей вы хотите ввести ?"<<endl;
    cin>>count;
    MARSH *pmarsh=new MARSH [count];
    p1=&pmarsh[0];
    
for(int i=0;i<count;i++)
    {
    cin.ignore();
     cout<<i+1<<"-aя запись"<<endl;
    cout<<"Введите название начального пункта"<<endl;
    gets(p1[i].nac_punkt);
    cout<<"Введите название конечного пункта"<<endl;
    gets(p1[i].konec_punkt);
    cout<<"Введите номер  пункта"<<endl;
    cin>>p1[i].nomer;
    cout<<"Введите длину  пункта"<<endl;
    cin>>p1[i].dlina;
 
    fwrite(&p1[i],sizeof(MARSH),1,f1);
    }
 
      fclose(f1); 
if((f1=fopen("2.dat", "rb+"))==NULL) {
    printf("Ошибка при открытии файла.\n");
    exit(1);
  }
for(int i=0;i<count;i++)
 
       {
            fread(&p1[i],sizeof(MARSH),1,f1);
            cout<<i+1<<"-aя запись"<<endl;
            cout<<"начальный пункт  "<<p1[i].nac_punkt<<endl;
            cout<<"название конечного пункта  "<<p1[i].konec_punkt<<endl;
            cout<<"длина  "<<p1[i].dlina<<endl;
            cout<<"номер   "<<p1[i].nomer<<endl;
    
    
}
       fclose(f1);
    system("PAUSE");
 
}
вот код считывает идеально все почему там так не могу сделать

Добавлено через 19 минут
помогите пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2012, 15:32
Помогаю со студенческими работами здесь

Почему не выдает ошибку?
здравствуйте, я недавно начал осваивать с++. Когда я игрался с типами данных, то возник такой вопрос: если какой нибудь переменной...

Почему выдает ошибку
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main() { double a; char c; scanf(&quot;%c&quot;, &amp;c); printf(&quot;%c\n&quot;, c); ...

Почему выдает ошибку?
Выдает ошибку: In function 'int main()': 6:30: error: 'strlen' was not declared in this scope 8:20: error: 'strlen' was not declared...

Почему выдает ошибку ?
#include &lt;iostream&gt; using std::cout; using std::cin; using std::endl; #include &lt;string&gt; using std::string; class Invoice { ...

Почему выдает ошибку
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &quot;stdafx.h&quot; #include &quot;windows.h&quot; void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru