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

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

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

Динамический массив структур - ошибка "попытка чтения или записи в защищенную память" - C++

17.02.2014, 03:31. Просмотров 400. Ответов 1
Метки нет (Все метки)

не работает:
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
class Students {
    struct list
    {
        string marka_mashini;
        string familiya_vladelca;
        int god_vipuska; 
        string registracionniy_nomer;
        string data_tehosmotra;
    };
 
private:
    list* spisok_mashin = 0;
    int kol = 0;
public:
    void dobavlenie_zapisi(string marka_mashini, string familiya_vladelca, int god_vipuska, string registracionniy_nomer, string data_tehosmotra)
    {
        kol++;
        spisok_mashin = (list*)realloc(spisok_mashin, kol * sizeof(list));
        spisok_mashin[kol - 1].marka_mashini= marka_mashini;
        spisok_mashin[kol - 1].familiya_vladelca= familiya_vladelca;
        spisok_mashin[kol - 1].god_vipuska = god_vipuska;
        spisok_mashin[kol - 1].registracionniy_nomer= registracionniy_nomer;
        spisok_mashin[kol - 1].data_tehosmotra= data_tehosmotra;
    }
а вот так, работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Students {
    struct list
    {
        char marka_mashini[14];
        char familiya_vladelca[19];
        int god_vipuska; 
        char registracionniy_nomer[12];
        char data_tehosmotra[10];
    };
private:
    list* spisok_mashin = 0;
    int kol = 0;
public:
    void dobavlenie_zapisi(char marka_mashini[], char familiya_vladelca[], int god_vipuska, char registracionniy_nomer[], char data_tehosmotra[])
    {
        kol++;
        spisok_mashin = (list*)realloc(spisok_mashin, kol * sizeof(list));
        strcpy(spisok_mashin[kol - 1].marka_mashini, marka_mashini);
        strcpy(spisok_mashin[kol - 1].familiya_vladelca, familiya_vladelca);
        spisok_mashin[kol - 1].god_vipuska = god_vipuska;
        strcpy(spisok_mashin[kol - 1].registracionniy_nomer, registracionniy_nomer);
        strcpy(spisok_mashin[kol - 1].data_tehosmotra, data_tehosmotra);
    }
При выполнении выдаёт ошибку на строчке:
C++
1
spisok_mashin[kol - 1].marka_mashini= marka_mashini;
Миниатюры
Динамический массив структур - ошибка "попытка чтения или записи в защищенную память"  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 03:31     Динамический массив структур - ошибка "попытка чтения или записи в защищенную память"
Посмотрите здесь:

Ошибка: "Попытка чтения или записи в защищенную память" - C++
Вот это выдает: Additional information: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память...

Двумерный динамический массив. Попытка чтения или записи в защищенную память - C++
В общем функция выглядит так float** calculate(float H, float W, float L, float Vu, float Tu, float l, float ro, float T0, float C,...

Ошибка : Попытка чтения или записи в защищенную память - C++
выходит ошибка после того как выполняется функция void poisk_cena(). Подскажите пожалуйста где ошибка. Ошибка: Необработанное...

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

Попытка чтения или записи в защищенную память - C++
собственно в проблема в заголовке #include "stdafx.h" #include <iostream> #include <fstream> using namespace std; void...

Попытка чтения или записи в защищенную память - C++
Здравствуйте. Вот такая проблема. При компиляции программы выводит сообщение: An unhandled exception of type...

Ошибка "Попытка чтения в запрещенную память" при работе с файлами - C++
Нужно хранить в файле данные со структуры и считывать их. Перепробовал кучу вариантов (fopen и ofstream/ifstream), постоянно одна и та же...

Структура / Попытка записи в защищенную память - C++
Доброго времени суток. Смотрите, есть следующий код: struct NewsInfo { int ID; char text; int typepost = -1; }; ...

Динамический список структур "Note" - C++
Доброй ночи форумчане! Помогите мне с задачей пожалуйста. Условие: Описать динамическую структуру с именем NOTE, с полями : фамилия,...

Ошибка "error C2109: для индекса требуется массив или указатель" - C++
Помогите, пожалуйста! Имеется программа: double f4 (double x) { double p,f; double a; int i,j; for(i=1;i<=N;i++) ...

Создать массив структур "Ведомость про участников конкурса" - C++
здравствуйте. Прошу написать программу. Большое спасибо за ваш труд. Условие: Создать массив структур, используя данные из задания....

Отсортировать массив структур типа "Znak" по заданному полю - C++
Вот что есть, помогите дальше... Я Ввожу знак зодиака и у меня должно сортировать в том порядке в котором есть в коде #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
17.02.2014, 07:30     Динамический массив структур - ошибка "попытка чтения или записи в защищенную память" #2
контейнер string в отличие от char[] является так сказать "резиновым" и sizeof() не выдаст как ожидается размер строки, т.к. заранее не известны ни длина, ни максимальная длина (в отличие от char[])
а потому не будет выделен новый объем памяти и выскочит ошибка доступа к невыделенной памяти, что и происходит.

длину каждого конкретного экземпляра string можно узнать с помощью length() и можно от этого плясать, но будет много возни.

я бы остановился на втором варианте, он вполне отвечает понятию "Динамический массив структур".
если конечно нет нужды обязательно использовать string
Ответ Создать тему
Опции темы

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