С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Сортировка односвязного списка В условии задачи нужно считать из файла неопределенное количество студентов и занести их в односвязный список. Отсортировать по изучаемому языку и вывести на экран. Вроде бы написал, но в сортировке есть проблемы, она зацикливается. #include <iostream> #include <fstream> #include <string> using namespace std; https://www.cyberforum.ru/ cpp-beginners/ thread1260148.html C++ Вычислительная ошибка при малом шаге
Всем привет. Только начинаю изучать с++. В общем, нужно написать программу. Вот она: "Вычислить и вывести на экран в виде таблицы значения функции, заданной графически (из лабораторной работы №1, вариант остаётся прежним) на интервале от Х1 до Х2 с шагом dx. Интервал и шаг задать таким образом, чтобы проверить все ветви программы. Таблицу снабдить заголовком и шапкой." Программу я написал...
C++ Как сделать блок схему? https://www.cyberforum.ru/ cpp-beginners/ thread1260121.html
Как сделать блок схему? #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++
помогите написать анализатор команд на с++
C++ Блок-схема по коду программы https://www.cyberforum.ru/ cpp-beginners/ thread1260117.html
Нужно сделать блок схему #include<iostream.h> #include<conio.h> #include<math.h> int x,y; void main() { clrscr(); cout<<"Enter x=";
C++ Блок-схема к программе https://www.cyberforum.ru/ cpp-beginners/ thread1260115.html
Нужно сделать блок схему к программе #include<iostream.h> #include<conio.h> #include<math.h> float y,x; const float p=3.1415926; void main() { clrscr();
C++ Необходима библиотека для работы с векторными форматами
Здравствуйте! По ходу деятельности мне стало необходимо работать с векторными изображениями. К сожалению, поиск дает очень мало результатов. Какие существуют удобные библиотеки для работы (не только рендеринга) с векторными изображениями (желательно, svg)? Добавлено через 3 минуты Вопрос закрыт. Libboard (GNU LGPL).
C++ После выполнения программы, работающей с динамической памятью, вылетает ошибка https://www.cyberforum.ru/ cpp-beginners/ thread1260095.html
при компиляции вылетает ошибка (не может обратиться к private gолям next, val) err: C2248 если поля поместить в public, то прога компилится, но вылетает сообщение после вывода очереди: expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) line 52 dbgdel.cpp файл linkedlist.h template <class T> class List { private: class node //Класс node содержит данные списка
C++ Указатель на указатели (1.Удалить элемент по ключу из списка, 2.удалить весь список) https://www.cyberforum.ru/ cpp-beginners/ thread1260091.html
Вот моя программа и осталось сделать эти две функции и у меня не выходит текст программы: main.cpp #include <QCoreApplication> #include <malloc.h> #include <iostream> #include "type.h" #include "dop_func.h" using namespace std;
C++ Не получается создавать рандомные числа
Вот мой код программы #include <iostream> #include <stdlib.h> using namespace std; int i; int main() { for(i=0;i<10;i++) { cout<<rand()%100<<endl;
C++ Настройка Visual C++ 2010. Как создать пустой проект? https://www.cyberforum.ru/ cpp-beginners/ thread1260085.html
Скачал себе MVC++ 2010, сделал в ней 2 проекта, все норм, потом походу что то наклацал в настройках, и теперь при каждом новом срр файле требует прописывать перед кодом #include"StdAfx.h" хотя раньше и без него работало нормально.
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
29.09.2014, 21:27 0

Распространенные ошибки - C++ - Ответ 6661853

29.09.2014, 21:27. Показов 395662. Ответов 73
Метки (Все метки)

Ответ

Работа с локальной копией объекта, вместо работы с самим объектом


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void foo_create( int * Arr ) {
    Arr = new int [10];
    for ( int i = 0; i < 10; i++ ) Arr[i] = i;
}
 
void foo_delete( int * Arr ) {
    delete [] Arr;
    Arr = NULL;
}
 
int main() {
    int * Ptr;
    foo_create( Ptr );
    for ( int i = 0; i < 10; i++ ) cout << Ptr[i] << "  ";
    foo_delete( Ptr );
    return 0;
}
Здесь ошибка в том, что при вызове функции foo_create в нее передается копия указателя Ptr
(который еще не инициализирован). При выделении памяти, ее адрес помещается в эту копию,
т.е. значение переменной Ptr не изменится.
В результате, после возврата из функции, адрес потеряется и, соответственно, потеряется выделенная память.
__________________________________
Варианты решения проблемы:
1. Передавать в функцию адрес указателя
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
void foo_create( int ** ptr_to_ptr )
{
    *ptr_to_ptr = new int [10];
    for ( int i = 0; i < 10; i++ ) (*ptr_to_ptr)[i] = i;
}
 
void foo_delete( int ** ptr_to_ptr )
{
    delete [] *ptr_to_ptr;
    *ptr_to_ptr = nullptr;
}
 
int main()
{
    int * Ptr;
    foo_create( &Ptr );
    for ( int i = 0; i < 10; i++ ) std::cout << Ptr[i] << "  ";
    foo_delete( &Ptr );
    std::cout  << Ptr <<  std::endl;
}
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
#include <iostream>
 
void foo_create( int * & Arr )
{
    Arr = new int [10];
    for ( int i = 0; i < 10; i++ ) Arr[i] = i;
}
 
void foo_delete( int * & Arr )
{
    delete [] Arr;
    Arr = nullptr;
}
 
int main()
{
    int * Ptr;
    foo_create( Ptr );
    for ( int i = 0; i < 10; i++ ) std::cout << Ptr[i] << "  ";
    std::cout <<  std::endl;
    foo_delete( Ptr );
    std::cout <<  Ptr << std::endl;
}


Вернуться к обсуждению:
Распространенные ошибки C++
10
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2014, 21:27
Готовые ответы и решения:

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

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

Ошибки после компиляции на Visual Express 2012.Ошибки в теме
Добрый вечер ребят помогите пожалуйста.Программа написана на Visual Express 2012.Обясните что...

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

73
29.09.2014, 21:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2014, 21:27
Помогаю со студенческими работами здесь

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

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

Распространенные ошибки SEO и ASP.NET 2.0
Здравствуйте, существуют несколько СЕО проблем при использовании ASP.NET, ниже я опишу эти...

Самые распространенные строки
type Mytype = record name:string; surname:string; end; var Students:Mytype; ...

Самые распространённые фамилии
Здравствуйте! Для реализации автоподстановки фамилии нужно как-то выявить, например, 1 (10, 15,...

Распространённые схемы мошейничества с вайбером
Использовался старый кнопочный телефон. Схема: - в одном из телеграмм чатов предложили...

Самые распространенные мужское и женское имена
Здрасти всем. Помогите справиться с решением задачи. Во входном файле записана следующая...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru