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

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

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

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
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;' делается внутри тела цикла???
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru