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

Чем может быть чревато создание в классе адреса на другой класс - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не получается сделать переполнение буфера http://www.cyberforum.ru/cpp-beginners/thread1203206.html
Всем привет! Нужно сделать переполнение буфера и подменить адрес функции на другой. Если делаю так: void overflow(char *ptr) { char buffer; strcpy(buffer, ptr); }
C++ Помогите исправить программу решения системы уравнений Выводит неопределенность # include <stdio.h> #include <iostream> # include <math.h> #include <conio.h> #include <locale.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread1203179.html
Объясните код C++
Задача Улитка. Улитка ползёт по вертикальному шесту высотой h метров, поднимаясь за день на a метров, а за ночь спускаясь на b метров. На какой день улитка доползёт до вершины шеста? Программа получает на вход натуральные числа h, a, b и должна вывести одно натуральное число. Гарантируется, что a>b. При решении этой задачи нельзя пользоваться условной инструкцией if и циклами. int...
C++ Программа, которая будет работать с персональными данными 5 сотрудников малого предприятия
Добрый вечер! Я изучать С++ начал, дошел до массивов и попалась задача вот такого содержания: "Программа, которая будет работать с персональными данными 5 сотрудников малого предприятия. Программа должна для каждого сотрудника хранить следующую информацию: • Фамилия • Имя • Отчество • Пол • Год рождения • Должность • Заработная плата
C++ Сортировка слиянием: подсчитать количество перестановок http://www.cyberforum.ru/cpp-beginners/thread1203144.html
Привет всем. Дана задача: подсчитать количество перестановок при сортировке массива. Нужен быстрый алгоритм, желательно алгоритм сортировки слиянием. Вот код: #include <stdio.h> #include <conio.h> void Merge(int *A, int first, int last) { int middle, start, final, j; int *mas=new int; middle = (first + last) / 2; start = first;
C++ Вставка элемента в массив после последнего положительного Нужно сделать программу, которая бы вставляла после последнего положительного элемента массива заданное значение, в противном случае вывести "ошибку". Что-то не получается. Посмотрите и подскажите, где ошибка? #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <time.h> void main () { int mas, i, a, b; cout<<"Vvedite chislo: "; cin >>a; подробнее

Показать сообщение отдельно
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
09.06.2014, 03:20     Чем может быть чревато создание в классе адреса на другой класс
Цитата Сообщение от Divergence Посмотреть сообщение
IGPIGP, спасибо за ответ!
Если честно, я не очень понимаю эти опасения по поводу того, что указатель может не указывать на существующую область памяти... у меня в коде сначала выделяется память, только затем в новый класс передается указатель. В случае такого грамотного подхода (когда ничего не забыто) опасности никакой нет?
Или все же могут быть косяки?
Например, я смутно предполагаю ситуацию, что в какой-то момент вызовется деструктор, который освободит память, на которую у меня несколько указателей по определению... Соответственно, несколько указателей будут указывать на пустоту. Однако, логика программы такова, что жизнь одного класса без другого просто не имеет смысла, поэтому уничтожаться они будут строго один за другим до самого конца. Остаются ли какие-то опасности при такой ситуации?
Зачем тогда создавать объект снаружи и передавать указатель на него? Почему бы не создать его внутри?
 
Текущее время: 05:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru