Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

17.02.2014, 03:31. Просмотров 420. Ответов 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;
0
Миниатюры
Динамический массив структур - ошибка "попытка чтения или записи в защищенную память"  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 03:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамический массив структур - ошибка "попытка чтения или записи в защищенную память" (C++):

Ошибка: "Попытка чтения или записи в защищенную память" - 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++
Здравствуйте. Вот такая проблема. При компиляции программы выводит сообщение: An unhandled exception of type...

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

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

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

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

я бы остановился на втором варианте, он вполне отвечает понятию "Динамический массив структур".
если конечно нет нужды обязательно использовать string
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2014, 07:30
Привет! Вот еще темы с ответами:

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

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

Создать массив объектов пользовательского типа "Car" (каталог машин) и функции чтения/записи из/в каталог(а) - C++
Добрый день! Нужно составить программу, которая будет дополнять каталог автомобилей Имеется массив структур Auto *car = new Auto ...

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") - C++
Описать структуру с именем "ORDER", содержащий следующие поля: "Счет плательщика"; "Счет получателя"; "Сумма, переводится банковской...


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

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

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