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

Конструктор класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Среда программирования для Windows 7 http://www.cyberforum.ru/cpp-beginners/thread811508.html
Подскажите пожалуйста какую лучше всего среду разработки установить для операционной системы Windows 7 домашняя базовая 32 разрядная? Установил Visual Studio 2005, эта среда не всегда хорошо работает бывало после нажатия кнопок Build Solution и Start without debuggin вылетает окно Прекращена работа программы LetAp.exe и далее окно Программа LetAp.exe не работает. Подскажите в чём может быть...
C++ make_pair Уважаемые форумчане, как написать функцию, которая на вход принимает make_pair? Вызывать буду так: func( std::make_pair(2, 3) ); http://www.cyberforum.ru/cpp-beginners/thread811492.html
__asm вставки (процессор Pentium) C++
Пишу в вижуал Студии, делаю ассемблерные вставки, хочу вызывать си-процедуру, в которой тоже ассемблер - просто поменять значение одного регистра, не хочу никаких стеков, ОЗУ и прочего. При выходе похоже не восстанавливается из стека адрес возврата и программа вылетает. Подскажите, где ошибка? (Лишние куски кода убрал для краткости) unsigned char expand_CL(void) { //unsigned char y; __asm{...
Генерация случайного числа больше нуля, но меньше единицы C++
Всем привет. Подскажите, как можно генерировать псевдослучайное число больше нуля, но меньше единицы. При этом количество цифр после точки должно быть от 16 до 18 включительно. Заранее всем спасибо.
C++ Исправить ошибки в связном списке http://www.cyberforum.ru/cpp-beginners/thread811474.html
Почти готовая лабораторка, но не хватает несколько деталей. Помогите решить проблему, пожалуйста! Задание : 1. Создание списка из файла. 2.Insert <елемент> n Вставка елемента в позицию n. 3. DELETE N Удаление елемента з N позиции. 4.CHANGE M N – Смена елементов M N . 5.DUMP Вывод в конечный файл . Все работает, но когда открываю текстовый файл со списком или отчетом, вместо элементов...
C++ Составить программу с аппроксимацией С пятой задачей помогите. В голову ничего не лезит подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
19.03.2013, 08:55     Конструктор класса
Цитата Сообщение от IrineK Посмотреть сообщение
Возникает вопрос: почему компилятор автоматически не присваивает ссылке NULL при операции delete?
Лишняя операция. Пользователь, если будет надо, сам обнулит. Можно еще попробовать составить код так, чтобы исключить обращение к уже удаленным объектам. RAII знакомо?

Тем не менее, хоть никто и не отрицает, что обнуление указателя -- годная существующая практика, но она не заменяет освобождение выделенной памяти под указатель. Вызов деструктора и присваивания нуля указателю -- не освобождает выделенную под указатель память, что со временем приведет к утечкам памяти.

Пример, вызывающий деструктор и обнуляющий адрес, вместо освобождения памяти.
Все очень быстро закончится bad_alloc'ом.
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
#include <iostream>
 
class Large {
 public:
  Large() {}
  virtual ~Large() {}
 private:
  char data[1048576];
};
 
int main(int argc,char **argv) {
  size_t counter = 0;
  while (true) {
    try {
      Large *object = new Large();
      object->Large::~Large();
      object = NULL;
      //delete object; // если память освобождать, выделять можно будет практически бесконечно долго.
    } catch (std::exception &e) {
      std::cout << "Error: " << e.what() << std::endl;
      break;
    }    
    std::cout << ++counter << " allocations made." << std::endl;
  }
  
  std::cin.get();
  return 0;
}
 
Текущее время: 05:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru