Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/23: Рейтинг темы: голосов - 23, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 184

функции new, delete

19.09.2010, 08:54. Показов 4896. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте.
можете показать полную реализацию функции new , delete?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2010, 08:54
Ответы с готовыми решениями:

Си - создать свои функции new, delete
как создать свои функции new, delete. которые память будут брать только в all. T *all = (T*)malloc(SIZE*sizeof(T)); получается как...

Используя delete по указателю, возвращенному new [] или delete [] указателем, возвращаемым new
Помогите ответить на вопрос, не могу понять суть вопроса (правильно ли понимаю, что будет если выделить память в куче и затем не удалить...

Значение delete в объявлении virtual функции
Привет всем! Закрываю дыры в знаниях C++:). Требуется помощь. Есть такой код: class SomeClass { virtual void...

4
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
19.09.2010, 08:58
http://msdn.microsoft.com/en-u... S.71).aspx

Не по теме:

Вы пробовали в поисковике набрать?

0
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
19.09.2010, 10:44
Надеюсь понятно:

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
#include <iostream>
#include <conio.h>
#include <windows.h> // это для генерации случайных чисел(GetTickCount())
using namespace std;
 
class My_Class
{
private:
    int index;
    int * Array; // динамический массив.Мы не знаем его размер и содержание.
public:
    My_Class() : index(0) {}
    My_Class(int size) : index(0)
    {
        Array = new int [size]; // динамически выделяем память под массив
    }
    ~My_Class()
    {
        delete [] Array; // освобождаем память после использования,стираем массив.
    }
    void Fill_Array(int x)
    {
Array[index] = x;
index++;
    }
    int Show(int y)
    {
        return Array[y];
    }
};
 
int main()
{
    srand(GetTickCount());
My_Class obj(20); // создаем массив из 20 элементов.
 
int num;
for(int i = 0;i < 20;i++)
{
num = rand() % 100;
obj.Fill_Array(num); // заполняем массив случайными числами
}
for(int i = 0;i < 20;i++)
cout <<obj.Show(i) << "  ";
 
 
_getch();
}
Добавлено через 6 минут
не по теме:
И не послать бы этого ugosdaryn подальше?
Навыкладывал ерунды не пытаясь сам решить и даже не попросив нормально.
А кто-то бросился за него все делать
0
 Аватар для Red Planet
49 / 10 / 3
Регистрация: 20.09.2009
Сообщений: 263
19.09.2010, 11:48
Здравствуйте, один из моих вопросов также о new и delete.
  1. Встретил при изучении ООП перегрузку операторов new и delete для создания экземпляров через указатели и динамических массивов.
    Следующий код работает и без их перегрузки.
    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 A {
    /*Функции, конструкторы*/
    }
     
    ostream& operator << (ostream &s, const A &top) {
     s <<top.w<<" ("<<top.c<<")."<<endl;
     return s;
    }
     
     
    istream& operator >> (istream &is, A &top) {
     is >>top.w>>top.c;
     return is;
    }
     
    int _tmain (int argc, _TCHAR* argv[]) {
     A *pointer;
     int n;
     cout <<"Quantity of things: ";
     cin >>n;
     for (int i=0; i<n; i++) cin >>pointer[i];
     for (int i=0; i<n; i++) cout <<pointer[i];
     delete []pointer;
    }
    Выходит, что операторы new и delete нужно перегружать только тогда, когда я хочу как-то по-своему задать правила выделения памяти под динамически создаваемые экземпляры (массивы) и не стоит изобретать велосипед, если и так все создается, вводится и выводится без ошибок? Правильно понимаю?
  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
    
    /*Первая*/
    class CTimer
    {
      LARGE_INTEGER mlFrequency;
      LARGE_INTEGER mlStart;
    public:
      double duration;
      CTimer() {
        QueryPerformanceFrequency(&mlFrequency);
      }
      void start() {
        QueryPerformanceCounter(&mlStart);
      }
      void  stop() {
        LARGE_INTEGER lEnd;
        QueryPerformanceCounter(&lEnd);
        duration  = (double(lEnd.QuadPart - mlStart.QuadPart) / mlFrequency.QuadPart)*1000;
      }
    };
     
     
    /*Вторая*/
    DWORD startTime, endTime;
    startTime=GetTickCount();
    /*Участок кода (решение какой-либо задачи), который нужно измерить.*/
    endTime=GetTickCount();
    printf ("Performance time: %g ms.\n", endTime-startTime); //Вывод результата.
    Уверен, что существуют и другие. Могут ли подобные счетчики быть хорошими или плохими? Какие лучше и какие хуже?
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
19.09.2010, 13:05
1. Понял правильно.
2. Они не бывают "хорошими" и "плохими", они бывают подходящими и неподходящими. PerformanceCounter способен измерять время с точностью до тактов (в масштабе наносекунд). TickCount ограничен миллисекундами, да и тут бывают погрешности. Выбирать тот или иной счётчик надо, исходя из своих потребностей.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2010, 13:05
Помогаю со студенческими работами здесь

В чем разница между delete и delete[]?
а можете еще по подробней рассказать про delete, точнее даже delete, чем именно отличается delete от delete, т.к. я попробовал...

Про утечку памяти, new, delete и функции, возвращающие указатель на структуру
О как тему назвал! Очередной вопрос от новичка. Допустим, есть код. #include &lt;cstdio&gt; #include &lt;ctime&gt; int...

Чем отличается delete[] от delete?
чем отличается? delete mas от delete mas

1. Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале.
Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале. Помогите,пожалуйста,завтра нужно...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru