1) Можно ли найти указатель на самый младший не занятый блок памяти?
2) Можно ли выделить память по указанному адресу?
ialexbr
Напиши свой ололокатор.
ialexbr
> 1) Можно ли найти указатель на самый младший не занятый блок памяти?
да
0x00000000
ialexbr
> 2) Можно ли выделить память по указанному адресу?
нет, первые 64кб недоступны для чтения или записи
если ты хочешь написать более оптимальный менеджер памяти то гугли в сторону VirtualAlloc. он умеет выделять кусок в определенном месте. ну и там же где-то рядом есть функция получения карты памяти
ialexbr
Вроде один из вариантов прошляться по содержимому памяти процесса были функции, работающие в паре с CreateToolhelp32Snapshot:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682489.aspx
Учтите что за время пути собака могла подрасти. карта памяти могла измениться.
VirtualAlloc и снэпшоты - это все про винду. Рассказывайте какая ос вас интересует.
Вообще все что вам нужно - вам скорее всего не нужно и это нужно делать другим способом, а не так как вы подумали, так что подробнее рассказывайте задачу.
Вам нужно общение между процессами?
ialexbr
> 1) Можно ли найти указатель на самый младший не занятый блок памяти?
> 2) Можно ли выделить память по указанному адресу?
И да и нет, причём нет гораздо более категоричное.
Если мы пишем приложение то вопросы аллокации и доступности памяти определяются ОСью, а не приложением (лол, а как иначе то).
Но с другой стороны C/C++ имеет прямой доступ к памяти ему доступной и где то в ядре возможно так сказать многое. За исключением совсем уж ассемблерно-специфичных штучек.
Т.е. да, вопрос надо полностью переформулировать. Начать просто с того с чем именно возник вопрос.
Хотелось бы написать свой менеджер памяти.. Я так понимаю стандартные функции типа malloc на самом деле реализованы через соответствующие функции ОС?
Прочитай Linux Kernel Development (Robert Love), оно помогает от любых вопросов, связанных с ОС.
Тема в архиве.