Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 1
Регистрация: 06.11.2014
Сообщений: 58

Ошибка памяти

13.03.2015, 15:51. Показов 1430. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Вот код:
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
62
63
64
65
66
67
68
69
#pragma hdrstop
#include<stdio.h>
#include<conio.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
  FILE *tr;
  FILE *tr_an;
  char str[256],str_a[256];
  int N=100,i,j,T=100;                              //N-number of spatial cells, T - number of time cells  
  float h,tau,kappa=0.25,a=1,L=1;             //a-speed,L-length of colclation area, h - spatial step 
  float f_num[100]={0},f_num1[100]={0};  //numeral solution 
  float f_an[100]={0},f_an1[100]={0};      //analitic solution
  float x=0,t=0,ta=0.375;
  h=L/N;
  tau=kappa*h/a;
 
 
  //tr=fopen("transfer_eq.txt","w");
  //tr_an=fopen("transfer_eq_a.txt","w");
  for(i=0;i<N;i++) {                  //initial conditions
    if ((x>=0)&&(x<=L/2)) {
      f_num[i]=2;
      f_an[i]=2;
    }
    else if ((L/2<x)&&(x<=1)) {
      f_num[i]=1;
      f_an[i]=1;
    }
    x+=h;
  }
  for(j=0;j<1;j++) {                  //boundery conditions
    f_num[j*N]=2;
    f_an[j*N]=2;
    t+=tau;
    if ((0<=t)&&(t<L/2/a)) {
      f_num[j*N+(N-1)]=1;
      f_an[j*N+(N-1)]=1;
    }
    else if (L/2/a<=t) {
      f_num[j*N+(N-1)]=2;
      f_an[j*N+(N-1)]=2;
    }
  }
 
  for(j=0;j<T;j++) {                       //loop of time coordinates
    sprintf(str,"data_num/a_num%d.txt",j); //recording to files that
    sprintf(str_a,"data_an/a_an%d.txt",j);
    tr=fopen(str,"w");                     //are in the folder 'data'
    tr_an=fopen(str_a,"w");
    for(i=1;i<N;i++) {                     //loop of spatial coordinates
      f_num1[i]=-kappa*(f_num[i]-f_num[i-1])+f_num[i];
      fprintf(tr,"%.2f  %.2f\n",(float)i*h,f_num1[i]);
      f_an1[i]=f_an[i-a*ta];
      fprintf(tr_an,"%.2f  %.2f\n",(float)i*h,f_an1[i]);
    }
    for(i=1;i<N;i++) {
      f_num[i]=f_num1[i];
      f_an[i]=f_an1[i];
    }
  }
 fclose(tr);
 fclose(tr_an);
  getch();
  return 0;
}
Вот ошибка:
---------------------------
Debugger Exception Notification
---------------------------
Project Project2.exe raised exception class EAccessViolation with message 'Access violation at address 32665A01. Read of address F8BA4184'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Я так понял, что это какой-то запрет на доступ к памяти по адресу ... Но как решить эту проблему, я не понимаю.
Дайте совет,пожалуйста.
И еще по программной части: я не совсем уверен, как программировать аналитическое решение. Подскажите, пожалуйста.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2015, 15:51
Ответы с готовыми решениями:

Ошибка доступа к памяти, ошибка компонентов .bpl
Использую в проекте библиотеку bass.dll. И при работе с ней у билдера часто возникают ошибки. Либо ошибка доступа к памяти, либо ошибка...

Ошибка памяти
Здравствуйте! Пишу симплекс-метод. Cpp-Ole-Excel. И посетил меня очень странный глюк: После правильной обработки динамических...

Ошибка доступа к памяти
Доброго времени суток! Возникла проблема. Есть класс СТРОКА. В нем перегруженные операторы &quot;-&quot; и сравнения. Вот код. ...

4
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
13.03.2015, 16:46
Ошибка от выхода за границы массива.
Из удивившего - можете пояснить сакральный смысл этого цикла?
Цитата Сообщение от Ildar_csu Посмотреть сообщение
for(j=0;j<1;j++) { //boundery conditions
Добавлено через 20 минут
Хотя проглядел по диагонали, вроде должны индексы считаться правильно.
Проверьте вот это место, всегда ли указатель на файл будет не NULL ?
C++
1
2
    tr=fopen(str,"w");                     //are in the folder 'data'
    tr_an=fopen(str_a,"w");
Ибо писать в NULL плохо
1
1 / 1 / 1
Регистрация: 06.11.2014
Сообщений: 58
13.03.2015, 16:59  [ТС]
Да, действительно, показывает, что NULL...а почему так происходит? fopen ведь создает файл.
А цикл - это граничные условия. цикл проходит всего 2 раза, т.к. для определения значения на следующем временном шаге нужно только 2 строки, вроде так
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
13.03.2015, 17:15
Лучший ответ Сообщение было отмечено Ildar_csu как решение

Решение

Цитата Сообщение от Ildar_csu Посмотреть сообщение
а почему так происходит?
Может как вариант fclose делать так же в цикле, где и fopen?
А то судя по скобкам откроется файлов дофига, а закроется всего два.
А вдруг есть попытки открыть уже открытый и незакрытый файл?
1
1 / 1 / 1
Регистрация: 06.11.2014
Сообщений: 58
13.03.2015, 17:23  [ТС]
В точку! Спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2015, 17:23
Помогаю со студенческими работами здесь

Ошибка: displayNotification: Не достаточно памяти
Подскажите пожалуйста!, я запускаю C++ Builder 2007 у меня вскакивает сообщение &quot;displayNotification: Не достаточно памьять&quot;...

Ошибка при обращении к памяти?
Ребята, помогите хоть отследить ошибку. Программа вылетает при больших значений z, хотя каждый раз по разному... Подозреваю, что проблема...

Ошибка очистки динамической памяти
Добрый день! Пожалуйста подскажите? что я делаю не так? Записываю небольшой текст в RichEdit, считываю его в динамический массив,...

Ошибка чтения из памяти (sscanf)
sscanf(CBuf,&quot;%le&quot;,&amp;Conc); почему такой касяк выползает? по логике же в Conc должно забиться 0.000000e+00. Или я неправ?

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru