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

Управление виртуальной памятью - C++

Восстановить пароль Регистрация
 
SlimSky
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 11
13.12.2013, 16:12     Управление виртуальной памятью #1
Необходимо создать структуру данных типа «дек» (очередь с двумя концами), каждый элемент которого занимает 100 кб.

Компилирует без ошибок, но на "case 2" выдает ошибку. Не понимаю((

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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#include <deque>
#include <iostream>
#include <string.h>
#include <locale.h>
#include <stdio.h>
 
using namespace std;
 
#define ELEMENT_SIZE (1024 * 100)//Каждый элемент занимает 100 кб
HANDLE heap;
 
char* text;
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    deque <char> v;
 
    int menu = 0;
    int r = 0;
    int l = 0;
 
    do
    {
        cout << "1. Проверить, дек пуст/не пуст\n";
        cout << "2. Добавить элемент в левый конец дека\n";
        cout << "3. Добавить элемент в правый конец дека\n";
        cout << "4. Удалить элемент слева\n";
        cout << "5. Удалить элемент справа\n";
        cout << "6. Просмотреть элемент слева\n";
        cout << "7. Посмотреть элемент справа\n";
        cout << "0. Выход\n";
 
        cin >> menu;
 
        switch (menu)
        {
            case 1:
                if (v.empty())
                    cout << "\nДек пуст\n\n";
                else 
                    cout << "\nДек не пуст\n\n";
 
                break;
 
            case 2:
                text = (char*)HeapAlloc(heap, 0, ELEMENT_SIZE);
 
                cout << "\nВведите текст нового элемента: ";
                cin >> text;
 
                v.push_front(*text); //Добавляем элемент в начало дека
                l = 1;
 
                cout << "\nЭлемент успешно добавлен\n\n";
            
                break;
 
            case 3:
                    text = (char*)HeapAlloc(heap, 0, ELEMENT_SIZE);
 
                    cout << "\nВведите текст нового элемента: ";
                    gets(text);
 
                    v.push_back(*text); //Добавляем элемент в конец дека
                    r = 1;
 
                    cout << "\nЭлемент успешно добавлен\n\n";
            
                break;
 
            case 4:
                if (v.empty())
                    cout << "\nДек пуст\n\n";
                else
                {
                    HeapFree(heap, 0, text);
 
                    v.pop_front(); //Извлечь из дека первый элемент
 
                    cout << "\nЭлемент успешно удален\n\n";
                    l = 0;
                }
 
                break;
 
            case 5:
                if (v.empty())
                cout << "\nДек пуст\n\n";
                else
                {
                    HeapFree(heap, 0, text);
 
                    v.pop_back(); // Извлечь из дека последний элемент
 
                    cout << "\nЭлемент успешно удален\n\n";
                    r = 0;
                }
 
                break;
 
            case 6:
                if (l == 0)
                    cout << "\nДек пуст\n\n";
                else
                    cout << endl << v.front() << "\n"; // Узнаем значение первого элемента
                break;
 
            case 7:
                if (r == 0)
                    cout << "\nДек пуст\n\n";
                else
                    cout << endl << v.back() << "\n"; // Узнаем значение последнего элемента
                break;
 
            case 0:
                return 0;
 
            default:
                cout << "\nНеверный пункт меню!\n\n";
                system ("pause");
        }
    }while (menu != 0);
}
Добавлено через 40 минут
Еще один вопрос.. Если поставить gets(text) вместо cin >> text, то при запросе ввода текста, текст не вводится
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 16:12     Управление виртуальной памятью
Посмотрите здесь:

управление памятью C++
Работа с allocator (управление памятью) C++
C++ Программирование с использованием ссылок. Управление памятью в С++
Управление памятью C++
C++ Куда деваются одномоментные указатели, или управление памятью в работе с std::string
Управление динамической памятью при работе с классами C++
C++ В чем разница между виртуальной и чисто виртуальной функцией?
Нужен материал для статьи про управление памятью в С++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru