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

Освобождение памяти в классах - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка вектора по двум полям http://www.cyberforum.ru/cpp-beginners/thread1310868.html
Вектор состоит из структуры с двумя полями: день недели и время. Нужно отсортировать так, чтобы сначала в векторе хранились структуры, у которых день недели понедельник, потом, где день недели вторник и тд. Но если встречаются структуры, где день недели совпадает, надо отсортировать по времени. В интернете нашла алгоритм, похожий на то, что мне надо, но не очень понимаю, помогите, пожалуйста ...
C++ Чтение текста из файла Здравствуйте. У меня есть задание по С++ и один из его аспектов - это поиск программой текстового файла внутри папки с проектом VS2013 и предложение ввести имя желаемого файла в командной строке. Если программа находит этот файл - она читает из него текст и все хорошо. Если нет - то выдает "Error". По идеи, все уже готово, но есть одно НО, которое я не учел. Это запрещенные имена файлов (такие... http://www.cyberforum.ru/cpp-beginners/thread1310856.html
Вернуть двухмерный вектор с класса? C++
Как правильно вернуть матрицу созданною через вектора из класса, в котором она созданная? вот мой код: #include <iostream> #include <vector> using namespace std; int n=10, m=10; class MATRIX{ private: vector <vector<int> > Matrix; public:
Кому интересно писать задачки на Dev-с++, не проходим мимо с меня +) C++
Масив X(n) розбитий на m фрагментів. У цілочисельному масиві K(m) зберіга*ються довжини відповідних фрагментів (усі k різнi, їх сума дорівнює n). Впорядкувати масив K за зростанням, переставивши відповідні фрагменти в масиві X.
C++ Выделение диапазона в Excel http://www.cyberforum.ru/cpp-beginners/thread1310848.html
Всем доброго времени суток. Есть программа,которая копирует данные с 1 книги экселя в другую,с определенными параметрами,форматом,проверкой и тд. Столкнулся с проблемой форматирования ячеек(и именно установкой границ ячеек) в скопированной книге. Форматирую верхнюю строку листа: void Style_Header (Excel::_WorksheetPtr NewSheet) { NewSheet->Range->RowHeight = 53;//высота верхней строки ...
C++ Разработать программу для вычисления определенного интеграла методом трапеций Разработать программу для вычисления определенного интеграла методом трапеций для функции типа: y=a*{e}^{b*sin(c*x)}+d . Коэффициенты a, b, c, d и границы интервала интегрирования считываются с экрана. подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2899 / 1435 / 395
Регистрация: 18.10.2014
Сообщений: 2,643
25.11.2014, 22:16     Освобождение памяти в классах
Ну так а что за белиберда написана в методе 'del'?

Цитата Сообщение от Sapendo Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
template <class T>
int cQueue<T>:: del (T&S)
{
  S=mas[0];
  int temp=mas[0];
  for(int i=0;i<5;i++)
  {
    mas[i]=mas[i+1];
    mas[5]=temp;
  }
  return 1;
}
Программа создает массивы 'mas' размера 5, но тому внутри метода 'del' тупо выполняет запись в 'mas[5]', что разумеется является выходом за пределы массива. Рушится чужая память, что обнаруживается 'delete[]' при завершении программы.

Отдельное недоумение вызывает тот факт, что метод 'del' полностью игнорирует и фактический размер массива и фактический тип элемента. Откуда взялось это 5 вообще, если размер массива равен 'size'? Почему 'temp' имеет тип 'int'> в то время как тип элемента - 'T'??? Почему присваивание 'mas[5]=temp;' делается внутри тела цикла???
 
Текущее время: 17:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru