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

malloc в С++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
_Kitten_
2 / 2 / 0
Регистрация: 21.03.2010
Сообщений: 22
12.12.2011, 20:10     malloc в С++ #1
Подскажите пожалуйста как в данной программе выделить динамическую память с помощью malloc для объекта

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
 #include <iostream>
 #include <cstdlib>
 #include <clocale>
 #include <conio.h>
 
 class software
 {
 public:
 typedef void (software::*delegate)(void);
 
 void Print() {
 std::cout << name << " " << version << " " << firm << " " << size << "\n"; 
 }
 
 void set_name()
 {
 std::cout << "Введите новое имя" << std::endl;
 std::cin >> name;
 }
 
 void set_firm()
 {
 std::cout << "Введите новую фирму" << std::endl;
 std::cin >> firm;
 }
 
 void set_size()
 {
 std::cout << "Введите новый размер" << std::endl;
 std::cin >> size;
 }
 
 void set_version()
 {
 std::cout << "Введите новую версию" << std::endl;
 std::cin >> version;
 }
 
 char name[80];
 char firm[80];
 unsigned short int size;
 unsigned short int version;
 };
 
 int main()
 {
 setlocale(LC_ALL, "Russian");
 
 software:: delegate actions[4] = { &software::set_name, &software::set_version, &software::set_firm, &software::set_size };
 software obj = { "IOS", "Apple", 1, 300 };
 
 std::cout << "Начальное состояние объекта" << std::endl;
 obj.Print();
 
 while (true)
 {
 std::cout << "Выберите какое действие вы хотите сделать" << std::endl 
 << "\t1. Изменить имя" << std::endl 
 << "\t2. Изменить версию" << std::endl 
 << "\t3. Изменить фирму-изготовитель" << std::endl 
 << "\t4. Изменить размер программы (в байтах)" << std::endl
 << "\t5. Выйти из программы" << std::endl;
 
 char key = _getch();
 if (key == '5')
 break;
 if (key >= '1' && key <= '4')
 {
 (obj.*actions[key - '1'])();
 obj.Print();
 }
 }
 
 system("Pause");
 return EXIT_SUCCESS;
 }
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2011, 20:10     malloc в С++
Посмотрите здесь:

calloc vs malloc C++
malloc, realloc C++
malloc() C++
C++ malloc vs new
new на malloc C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
12.12.2011, 20:29     malloc в С++ #2
C++
1
software * s= (software*)malloc(sizeof(software));
-=ЮрА=-
Заблокирован
Автор FAQ
12.12.2011, 22:42     malloc в С++ #3
_Kitten_, в С++ память выделяется new, а malloc это для Си!!!!
Если вам нужен аналог realloc то на плюсах это делается приблизительно вот так
C++
1
2
int * arr = new int[n];
arr[n - 1] = &(new int[m]);
Добавлено через 2 минуты
Я вот так это на плюсах вижу
C++
1
software * s= new software[1];
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
13.12.2011, 00:01     malloc в С++ #4
C++
1
2
3
4
5
6
7
class software
{ 
  void * operator new(size_t size)
   {
      return  std::malloc(sizeof(size));
   }
}
Yandex
Объявления
13.12.2011, 00:01     malloc в С++
Ответ Создать тему
Опции темы

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