splincodewd
@splincodewd
Developer

Как можно на C++ вручную управлять памятью?

Вот существует динамическое выделение памяти через new
int* arr[10] = new int[10];
int* year = new int(2016);


А можно как-то самостоятельно реализовать класс new? Но как вообще это все устроено в плюсах, на уровне компилятора, хотелось бы самостоятельно располагать любую информацию в ячейках, но как, не могли бы продемонстрировать собственные примеры кода? Спасибо.
  • Вопрос задан
  • 316 просмотров
Решения вопроса 4
Rou1997
@Rou1997
хотелось бы самостоятельно располагать любую информацию в ячейках

Зачем? For fun?
Можно написать простейший класс с парой приватных полей и публичных геттеров/сеттеров, скомпилировать это компилятором g++, а потом взять IDA Pro with Hex-Rays и декомпилировать геттеры и сеттеры. Получится код, состоящий из одних только обращений к ячейкам, поля - это и есть ячейки памяти, геттер или сеттер берет указатель на класс (то есть адрес в памяти), добавляет к адресу определенное смещение (некое число) - и получает ячейку, в ячейку можно писать либо читать данные, например, можно ей присвоить адрес строки (char*)... Причем, смещение всегда константа, поэтому другая программа может внедриться в вашу (с помощью хуков, на Android они делаются с помощью Cydia), и взаимодействовать как ее часть...
На мой взгляд - очень здорово...
А еще есть WriteProcessMemory/ReadProcessMemory, тоже прикольная штука...
Ответ написан
Комментировать
Djaler
@Djaler
Сеньор-помидор
new - обертка для malloc
Ответ написан
Комментировать
@iv_k
ищите по словам "custom memory allocator"
Ответ написан
Комментировать
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы