Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
41 / 40 / 23
Регистрация: 10.03.2012
Сообщений: 374
1

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

05.09.2012, 20:48. Показов 2304. Ответов 3
Метки нет (Все метки)

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

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
#include <iostream>
#include <cstring>
 
using namespace std;
 
struct Country
{
    char *name;
    char *continent;
    unsigned long people;
};
 
void SetValue (Country *PCountry, char *CurrentCountry, char *CurrentContinent, unsigned long CurrentPeople, int CurrentN)
{
    PCountry [CurrentN]. name = new char [strlen (CurrentCountry) + 1];
    strcpy(PCountry [CurrentN]. name, CurrentCountry);
    PCountry [CurrentN]. continent = new char [strlen (CurrentContinent) + 1];
    strcpy(PCountry [CurrentN]. continent, CurrentContinent);
    PCountry [CurrentN]. people = CurrentPeople;
}
 
void FreeMem (Country *PCountry)
{
    delete [] PCountry -> name;
    PCountry -> name = NULL;
    delete [] PCountry -> continent;
    PCountry -> continent = NULL;
}
 
int main()
{
    Country *ArrCountry = NULL;
    int N;
    unsigned long CurrentPeople;
    char CurrentName [50], CurrentContinent [25];
 
    FreeMem(ArrCountry);
    for (int i = 0; i < 3; i ++)
    {
       cout << "Input country's name: ";
       cin >> CurrentName;
       cout << "Input continent's name: ";
       cin >> CurrentContinent;
       cout << "Input number of people: ";
       cin >> CurrentPeople;
       cout << endl;
       SetValue (ArrCountry, CurrentName, CurrentContinent, CurrentPeople, i);
    }
 
    for (int i = 0; i < 3; i ++)
    {
       cout << ArrCountry [i]. name << endl;
       cout << ArrCountry [i]. continent << endl;
       cout << ArrCountry [i]. people << endl;
       cout << endl;
    }
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2012, 20:48
Ответы с готовыми решениями:

Выделение динамической памяти под массив структур
Добрый день, уважаемые! Пишу функцию выделения памяти под массив структур. Но программа не хочет...

Выделение динамической памяти под массив из класса
Допустим, есть class c, и он включает в себя char-массив a: class c { private: char a;...

Выделение памяти под массив структур
Возникла проблема в том что не могу никак эфективно реализовать выделение памяти под массив...

Выделение памяти под массив структур
Добрый день. Подскажите в чём ошибка. #pragma hdrstop #pragma argsused #include &lt;stdio.h&gt;...

3
599 / 567 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
05.09.2012, 20:57 2
Цитата Сообщение от RocBoy-D Посмотреть сообщение
Здравствуйте! Пытаюсь выделить память под массив структур, считать с клавиатуры, вывести на экран и удалить выделенную память. Подскажите в чем ошибка?
это мы хотим вас спросить в чем ошибка? что не так? что пишет компилятор? или он тоже молчит?
0
41 / 40 / 23
Регистрация: 10.03.2012
Сообщений: 374
05.09.2012, 23:21  [ТС] 3
panicwassano, В CodeBlocks - аварийное завершение работы программы после первой введенной структуры, а в Borland C++ сообщение Null pointer assignment
0
162 / 162 / 68
Регистрация: 23.02.2011
Сообщений: 392
06.09.2012, 00:06 4
RocBoy-D, Для начала надо Country *ArrCountry = new Country [3]; а потом уже в конце программы FreeMem() делать, только вот таким образом - FreeMem(ArrCountry); освободите память только одного элемента массива. Можно сделать так:
C++
1
2
for (int i = 0; i < 3; i ++)
   FreeMem(ArrCountry + i);
И после уже FreeMem() надо delete [] ArrCountry;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2012, 00:06

Динамическое выделение памяти под массив структур (new/delete)
Люди добрые, подскажите пожалуйста, где в моем коде закралась ошибка? Интернет перечитал, во всех...

Правильное выделение динамической памяти для структур
Есть кусок кода работы с массивом структур. struct s{ string a; string b; string c; } arr;...

Структуры выделение динамической памяти под массивы
Здравствуйте, Мне нужно создать массив из элементов структуры, и использовать для этого...

Выделение области динамической памяти под матрицу
Код: #include&lt;iostream&gt; using namespace std; int main() { int n,m; int i,j,q; ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru