Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
wollk
1 / 1 / 0
Регистрация: 17.02.2013
Сообщений: 142
#1

Память не может быть прочитала - C++

17.10.2013, 18:41. Просмотров 247. Ответов 4
Метки нет (Все метки)

Здравствуйте, вот есть код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct Dyn{
    Syt select;
    Dyn* next;
};
 
............
 
void Coal::add(Syt data){
    Dyn *temp = new(Dyn);
    temp->select=data;
    for(int i=0;i<=count;i++){
        if(i==count)first->next=temp;
    }
    count++;
}
Если закомментировать if(i==count)first->next=temp; то ошибка пропадает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 18:41     Память не может быть прочитала
Посмотрите здесь:

Память не может быть прочитана! - C++
Проблема возникает при копировании одного массива в другой. Я вроди просмотрел и размерности вроди совпадают, но может быть я что то...

По каким причинам память не может быть выделена динамически? - C++
Что это могут быть за причины?

Память не может быть "written" - C++
Помогите найти ошибку в следующем коде: На этапе вхождения в функцию &quot;vvod_vseh&quot;, а именно при вводе первой фамилии - выскакивает ошибка...

Может ли быть такое? - C++
поставил счетчик для сравнений в пирамидальной сортировке массива выдает 34732 сравнения. Добавлено через 1 час 3 минуты up!

В чём может быть ошибка? - C++
Не пойму в чём ошибка в программе: #include &lt;iostream&gt; using namespace std; int main( ) // Program that...

В чём может быть ошибка? - C++
Пишет, что нету точки с запятой. Где??? #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; { class Program ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,056
Завершенные тесты: 1
17.10.2013, 18:45     Память не может быть прочитала #2
либо first указывает на невыделенную память либо next
без полного кода не понять
wollk
1 / 1 / 0
Регистрация: 17.02.2013
Сообщений: 142
17.10.2013, 18:53  [ТС]     Память не может быть прочитала #3
CPP
Кликните здесь для просмотра всего текста
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
#include "struct.h"
 
Coal::Coal(){
    count=0;
}
Coal::Coal(Syt data)
{
    first=0;
    count=1;
    add(data);
}
void Coal::add(Syt data){
    Dyn *temp = new(Dyn);
    temp->select=data;
    for(int i=0;i<=count;i++){
        if(i==count)first->next=temp;
    }
    count++;
}
 
bool Coal::del(int i){
    Dyn *temp=first;
    if(i>=count) return false;
    for(int j=0;j<i;j++){
        if(j-count==i-1) temp->next=temp->next->next;
        if(j-count==i) delete(temp);
        temp=temp->next;
    }
}
 
int Coal::g_count(){
    return count;
}
 
Syt Coal::get(int i){
   /* Dyn *temp=first;
    for(int j=0;j<=i;j++){
        if(j==i) return temp->select;
        temp->select=temp->next->select;
    }*/
}


H
Кликните здесь для просмотра всего текста
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
#ifndef STRUCT_H
#define STRUCT_H
#include <QtGui>
struct Syt
{
    int group;
    int price;
    float pn;
    float vt;
    float sr;
    float ch;
    float pt;
    float itogo;
};
 
struct Dyn{
    Syt select;
    Dyn* next;
};
 
class Coal{
protected:
    int count;
    Dyn* first;
public:
    Coal();
    Coal(Syt);
 
    int g_count();
    void add(Syt);
    void sort();
    bool del(int);
    Syt get(int i);
};
#endif // STRUCT_H
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,056
Завершенные тесты: 1
17.10.2013, 18:56     Память не может быть прочитала #4
Цитата Сообщение от wollk Посмотреть сообщение
first=0;
в конструкторе first = 0 а вы пытаетесь взять от него next в функции add
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2013, 19:06     Память не может быть прочитала
Еще ссылки по теме:

Как такое может быть? - C++
Пишу программку... Начало функции мейн. Не прошло еще ничего кроме файла: int k=1; int l=1; На что компилятор мне выдает, что...

В чем может быть ошибка? - C++
Вот программа: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; #include...

Где может быть ошибка? - C++
#include &lt;iostream&gt; #include &lt;queue&gt; #include &lt;string&gt; using namespace std; int main(){ string s; queue&lt;string&gt;...

В чём может быть ошибка? - C++
Описать функцию Power4(x,a,ξ) вещественного типа (параметры х, а, ξ - вещественные, |х|&gt;1; a,ξ &gt; 0), находящую приближенное значение...


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

Или воспользуйтесь поиском по форуму:
wollk
1 / 1 / 0
Регистрация: 17.02.2013
Сообщений: 142
17.10.2013, 19:06  [ТС]     Память не может быть прочитала #5
Так я же пытаюсь ноль заменить на temp. Так нельзя ?

Заменил на first->next=0; - ошибка осталась

Как тогда правильно сделать ? Мне нужно добавлять новый элемент в конец, для этого мне нужно у предыдущего элемента поменять next с 0 (или любого другого значения) на ссылку на мою структуру.

Это типа мы делаем динамический массив структур

Добавлено через 2 минуты
Ой протупил ((((

C++
1
first = new Dyn;
это помогло
Yandex
Объявления
17.10.2013, 19:06     Память не может быть прочитала
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru