Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2018, 16:17   #1
NDrago
Пользователь
 
Регистрация: 22.09.2017
Сообщений: 45
По умолчанию работа с памятью

Всем доброе время суток, раньше изучал языки программирования в том числе и С++ как что-то поверхностное,основанное только на их синтаксисе,
а сейчас стал узнавать от старших товарищей о некоторых фишках,например я всегда думал что к полю обьявленному в классе как private нельзя обращаться извне,только используя сет и гет функции, но как оказалось если уметь работать с адресами,то можно обратиться к подобной информации, я понял насколько важно понимать как это все устроено и работает на уровне памяти, к сожалению мои попытки найти что-то хорошо укомплектованное информацией по этой теме не привели к результату, посоветуйте источники где можно достать информацию по данной теме,заранее спасибо
NDrago вне форума Ответить с цитированием
Старый 22.04.2018, 17:53   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от NDrago Посмотреть сообщение
Всем доброе время суток, раньше изучал языки программирования в том числе и С++ как что-то поверхностное,основанное только на их синтаксисе,
а сейчас стал узнавать от старших товарищей о некоторых фишках,например я всегда думал что к полю обьявленному в классе как private нельзя обращаться извне,только используя сет и гет функции, но как оказалось если уметь работать с адресами,то можно обратиться к подобной информации, я понял насколько важно понимать как это все устроено и работает на уровне памяти, к сожалению мои попытки найти что-то хорошо укомплектованное информацией по этой теме не привели к результату, посоветуйте источники где можно достать информацию по данной теме,заранее спасибо
Нет никакой темы. Есть организация компьютера, как машины фон-Неймана. (Еще бывает Гарвардская архитектура - пример - микрокалькулятор МК-61).
И все из этого вытекает. Язык С++ дает вам доступ к чему угодно простым синтаксисом, состоящим из "взять адрес чего-то, как число", "использовать адрес для доступа к чему-то", и арифметика работы с адресом. В отличие от простых чисел, эта арифметика учитывает размер "чего-то". Т.е. если "что-то" по размеру 20 байт, то +1 к адресу этого даст реально +20 в численном виде.
И возникает море проблем "как нельзя делать", из-за того, что компилятор выполняет оптимизации + процессоры накладывают ограничения, типа адрес должен быть кратен 16 (выравнивание). Потому, если вы хотите, чтобы программа работала везде - это нужно учитывать (т.е. у вас конкретно на интеле все ок, а на андроиде "ничегонеработает".)
У нас тут целая тема скатилась к обсуждению UB с пол года назад.

Насчет private - это искусственное ограничение Просто измените h-файл на public и все станет доступно и без указателей.

Последний раз редактировалось alexzk; 22.04.2018 в 18:06.
alexzk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с памятью mufesto Win Api 1 30.01.2012 15:13
работа с памятью Mr_ViK Win Api 13 16.01.2012 01:53
работа с памятью в VB Mr_ViK Помощь студентам 1 14.01.2012 16:54
Работа с памятью Seferus Общие вопросы C/C++ 4 28.12.2010 14:04
Работа с памятью GrihaI Общие вопросы C/C++ 0 14.05.2010 18:18