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

Понимание для чего вообще нужны указатели? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблема с pow http://www.cyberforum.ru/cpp-beginners/thread382561.html
#include <iostream> #include <conio.h> #include <math.h> using namespace std; class Triangle { public: int a,b,c;
C++ Считать массив строк из файла Например есть файл in.txt, с него нужно считать массив строк в мемо, а в другом мемо записать эти же строки в ascii кодах, например: в файле: abc bcd def в первом мемо должно отобразиться то же самое что и в файле, а во втором их коды: 97 98 99 98 99 100 100 101 102 как реализировать такую функцию? заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread382557.html
глобал в библиотеке, не отображается в дебагере C++
Использую студию 2010, профешинал. Есть в статик библиотеке глобальная переменная, внутри этой библиотеке в дебагере ее поля вопросиками показываются, а хотя извлекается оттуда все нормально. Но очень мешает отлаживать. Мб кто встречал такие проблемы и знает решение. P.S. глобальная переменная является структурой.
C++ Очередь, С++
здраствуейте, помогите реализовать алгортитм :pardon: С++ , буду признателен =) Смоделировать очередь, в которой реализован такой механизм изъятия элемента из очереди: начало очереди всегда находится в первом элементе массива; при изъятии одного элемента из очереди, все остальные элементы перемещаются на одну позицию ближе к началу массива. После обработки всей заданной входной...
C++ Табуляция http://www.cyberforum.ru/cpp-beginners/thread382529.html
ПРивет всем передо мной стоит следующая задачка: Требуется вычислить значения yi заданной функции для ряда значений аргументов xi, i=1,…,N, при этом вычис-лив с точностью ε > 0 значения функций ряда согласно разложениям в степенные ряды. f=4/sin x + (ex – sin x)/cos x. Написал кой-чего, но работать не хочет. Помогите, а? #include <stdio.h> #include <conio.h> #include <math.h> double eps =...
C++ Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на ... Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на 2 и 4, но не делятся на 6. Записать эти числа в текстовый файл g, а все остальные числа – в текстовый файл h. подробнее

Показать сообщение отдельно
Bers
Заблокирован
15.11.2011, 07:25     Понимание для чего вообще нужны указатели?
Цитата Сообщение от taras atavin Посмотреть сообщение
При построении дерева указатели реально нужны, но класс дерева полностью их инкапсулирует и наружу не выдаёт. Динамический массив нельзя сделать без указателей явных, или скрытых, но класс динамического массива полностью инкапсулирует свой укказатель на данные и наружу не выдаёт.
Вы понимаете, что втолковываете мне очевидные для меня вещи?
Я прекрасно это все знаю. И где можно использовать, и где нельзя.

Я вам говорю - нельзя в любой момент времени лазить по указателю. Можно тогда, и только тогда, когда есть 100% гарантия валидности указателя.

Вот вам ещё реальный случай: большой проект, над которым работало несколько человек.
Менеджер держал свои объекты в векторе. А наружу выдавал интерфейсный указатель на эти объекты. Что бы снаружи нельзя было поломать объекты через указатель.

Казалось бы - все круто. Все нормально. Проблемм быть не должно.

Переодически крэш всей системы. Причём каждый раз в разных местах. Причем не постоянно, а довольно таки редко. Даже не понятно, что является причиной аварий. Трудно найти баг, который проявляется лишь изредка, причем каждый раз в разных местах.

И только потом, после многодневных поисков, и отчаянного тестирования, выяснилось.
Внимание: когда заканчивался резерв памяти вектора, он делал реалок. Все внешние ссылки на объекты становились не_валидными.

Но поскольку, это происходило только когда у вектора заканчивался резерв памяти, то происходило это не постоянно, а только через раз.

А интерфейсный указатель об этом не знал. Никому в голову не приходило, что объект, который по замыслу не должен вообще никуда двигаться, может поменять своё место жительство.

Программист допустил ошибку. Он либо должен был юзать list вместо vector
Либо интерфейсный указатель должен был обращаться к объекту по индексу массива (им не страшны реалоки), а не по указателю напрямую.

Но это была ошибка, которую искали несколько дней.

Допустить такую ошибку очень просто. А если ещё у вас при этом классы сами не будут следить за собственной безопасностью, а уповать на корректность программистов, то количество таких багов вырастет в геометрической прогрессии.
 
Текущее время: 05:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru