Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка односвязного списка https://www.cyberforum.ru/cpp-beginners/thread1260148.html
В условии задачи нужно считать из файла неопределенное количество студентов и занести их в односвязный список. Отсортировать по изучаемому языку и вывести на экран. Вроде бы написал, но в сортировке...
C++ Вычислительная ошибка при малом шаге
Всем привет. Только начинаю изучать с++. В общем, нужно написать программу. Вот она: "Вычислить и вывести на экран в виде таблицы значения функции, заданной графически (из лабораторной работы №1,...
Как сделать блок схему? C++
Как сделать блок схему? #include<iostream.h> #include<conio.h> int s=0; void main() { clrscr(); for(int i=1;i<5;i++) { if(i%3==0)
C++ Блок-схема Помогите сделать блок схему по коду #include<iostream> using namespace std; void main() { float z,y,x; system("cls"); cout<<"Enter x="; cin>>x; cout<<"Enter y="; https://www.cyberforum.ru/cpp-beginners/thread1260120.html
C++ Анализатор команд https://www.cyberforum.ru/cpp-beginners/thread1260119.html
помогите написать анализатор команд на с++
Блок-схема по коду программы C++
Нужно сделать блок схему #include<iostream.h> #include<conio.h> #include<math.h> int x,y; void main() { clrscr(); cout<<"Enter x=";
Блок-схема к программе C++
Нужно сделать блок схему к программе #include<iostream.h> #include<conio.h> #include<math.h> float y,x; const float p=3.1415926; void main() { clrscr();
C++ Необходима библиотека для работы с векторными форматами Здравствуйте! По ходу деятельности мне стало необходимо работать с векторными изображениями. К сожалению, поиск дает очень мало результатов. Какие существуют удобные библиотеки для работы (не... https://www.cyberforum.ru/cpp-beginners/thread1260110.html
C++ После выполнения программы, работающей с динамической памятью, вылетает ошибка https://www.cyberforum.ru/cpp-beginners/thread1260095.html
при компиляции вылетает ошибка (не может обратиться к private gолям next, val) err: C2248 если поля поместить в public, то прога компилится, но вылетает сообщение после вывода очереди:...
C++ Указатель на указатели (1.Удалить элемент по ключу из списка, 2.удалить весь список) Вот моя программа и осталось сделать эти две функции и у меня не выходит текст программы: main.cpp #include <QCoreApplication> #include <malloc.h> #include <iostream> #include "type.h"... https://www.cyberforum.ru/cpp-beginners/thread1260091.html
MrGluck
Форумчанин
Эксперт CЭксперт С++
8143 / 4994 / 1436
Регистрация: 29.11.2010
Сообщений: 13,460
22.09.2014, 11:19 0

Распространенные ошибки

22.09.2014, 11:19. Просмотров 108643. Ответов 63
Метки (Все метки)

Ответ

Выделение памяти без дальнейшего освобождения или неверное освобождение

а) При выделении памяти через оператор new - освобождайте её с помощью оператора delete в конце программы
C++
1
2
3
int * a = new int;
// ... использование переменной
delete a; // перед выходом из программы
При отсутствии явного освобождения программа может вызывать утечку памяти.

б) Используйте для освобождения памяти, выделенной под массив, оператор delete [], а под обычные переменные - delete.
C++
1
2
3
4
5
6
7
int * a = new int;      // переменная
int * b = new int [2];  // массив
// ...
// delete [] a; // не ОК
delete a;       // ОК
// delete b;    // не ОК
delete [] b;    // ОК
Несмотря на то, что программа скомпилируется, попытка освобождения с помощью неверного оператора вызывает UB (неопределённое поведение), что приводит к трудноуловимым ошибкам.

в) Не стоит сочетать в программе, а тем более по отношению к одной и той же переменной/массиву, разные способы выделения/освобождения памяти. При выделении памяти с помощью malloc/calloc - освобождайте её с помощью функции free, при выделении через оператор new/new [] - освобождайте с помощью оператора delete/delete []. Стоит отметить, что использование сишных способов работы с памятью в целом не одобряется.

Вернуться к обсуждению:
Распространенные ошибки
6
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2014, 11:19
Готовые ответы и решения:

Вывести самые распространенные женские и мужские имена
Помогите решить задачу пожалуйста! Написать программу, которая формирует файл записей данной...

Вывести самые распространенные мужские и женские имена
Имеется массив записей о студентах, каждая из которых включает поля: фамилия, имя, отчество, пол,...

Распространенные ошибки
Оглавление Ошибки этапа компиляции (В процессе компиляции выдается либо сообщение об ошибке,...

безопасность и распространенные ошибки
Тут наткнулся на очень интересные тексты: http://werad.narod.ru/articles/programm6.html ...

63
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.