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

В чем преимущества new и delete и могут ли они действительно заменить функции calloc, malloc, free, realloc? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конструктор со строкой - именем файла http://www.cyberforum.ru/cpp-beginners/thread1798599.html
есть класс вида class A { B b; /* ... */ }; а у класса B конструктор B(istream&), дефолтного нет если сделать у А конструктор такого же вида, то все хорошо A::A(istream& file) : b(file),...
C++ Подсчёт контрольной суммы Приветствую! Необходимо подсчитать 32-битную сумму для файла checksum = word1 + word2 + ... + wordN. Я недавно читал про little- и -big-endian. В связи с этим вопрос. Если я буду считывать... http://www.cyberforum.ru/cpp-beginners/thread1798567.html
C++ Как реализовать систему захвата клавиш в MacOS?
Привет, форумчане! Подскажите как реализовать систему захвата клавиш? Хотябы стрелочки. Сижу на MacOS, пишу в среде XCode. Проблема такая, что пробовал с "switch(getch)" (или как-то так) не...
Наследование. Очистка памяти в производном классе C++
Создаю базовый класс ParentClass, содержащий в качестве объекта массив (выделяется динамический массив в зависимости от указанного пользователем размера). Затем потомок DerivedClass. Вопрос: будет ли...
C++ Непонятен синтаксис шаблонов из кода boost для вычисления факториала http://www.cyberforum.ru/cpp-beginners/thread1798524.html
Доброго дня, уважаемые форумчане. Просьба ответить на вопрос в чем смысл дивных конструкций из примера внизу. http://www.boost.org/doc/libs/1_48_0/libs/phoenix/example/factorial.cpp ...
C++ Написание програмы по полёту ракеты Очень надеюсь, что найдётся человек, которому не лень помочь. Просто я сильно провтыкался с дэдлайном в ВУЗе и сейчас в форсированом режиме делаю курсовую, так-как бедный студент приобрести не могу,... подробнее

Показать сообщение отдельно
kokzahvas
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 65

В чем преимущества new и delete и могут ли они действительно заменить функции calloc, malloc, free, realloc? - C++

25.08.2016, 14:27. Просмотров 979. Ответов 32
Метки (Все метки)

Язык программирования C поддерживает функции динамического управления пямятью: calloc, malloc, free, realloc - которые неподдерживают некоторые компиляторы C++. Вместо этих функций у них есть объектные операторы new и delete. В связи с этим у меня несколько вопросов. 1. Я написал образец программы, использующей статические и динамические переменные и массивы, но вывод первого массива iarray0 почему-то не работает. 2. Я не совсем понял разницу между статическими и динамическим переменными и массивами. 3. В чем преимущества операторов new и delete и могут ли они действительно заменить функции calloc, malloc, free, realloc?
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
#include <iostream>
    int main(int argc, char **argv)
    {
        // Использование статических переменных.
        int a0;
        int b0  = 5;
        a0 = 10;
        b0 = a0 + b0;
        // Использование статических массивов.
        int num0;
        std::cout << "Введите размер массива iarray0: ";
        int iarray0[num0];
        for(int i = 0;i < num0; i++)
        {
            iarray0[i] = i;
        }
        for(int i = 0;i < num0; i++)
        {
            std::cout << "Значение элемента " << i << " массива iarray0 = " << *(iarray0 + i) << std::endl;
        }
        // Использование динамических переменных.
        int *a1 = new int;
        int *b1 = new int(5);
        *a1 = 10;
        *b1 = *a1 + *b1;
        delete a1;
        delete b1;
        // Использование динамических массивов.
        int num1;
        std::cin >> num1;
        std::cout << "Введите размер массива iarray1: ";
        std::cin >> num1;
        int *iarray1 = new int[num1];
        for(int i = 0;i < num1; i++)
        {
            iarray1[i] = i;
        }
        for(int i = 0;i < num1; i++)
        {
            std::cout << "Значение элемента " << i << " массива iarray1 = " << iarray1[i] << std::endl;
        }
        delete[] iarray1;
        return 0;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru