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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 15:40   #1
alenka_ej
 
Регистрация: 08.05.2010
Сообщений: 5
По умолчанию VirtualAlloc

Здраствуйте мне нужно написать программку резервирования и выделения памяти. я зарезервировала 10 мб памяти и выделила из него сегмент 1 мб. Подскажите плиз, а как можно выделить последовательно выделить 10 сегментов по 1 мб и вывести адреса этих сегментов на экран? не могу разобраться толком..=( спасибо заранее

Код:
#include <windows.h>
#include <iostream.h>
#include <conio.h>
char *p=NULL;
#define MEGABYTE 1048576
#define msize 10

void main(void)
{
	if (p)
	{
		cout<<"\nosvobojdenie\n";
		VirtualFree(p,0,MEM_RELEASE);
		p=NULL;
		cout<<"ok\n";
	}

      cout<<"\nvidelenie pamyati\n";
      p=(char *)VirtualAlloc(NULL, msize*MEGABYTE, MEM_RESERVE, PAGE_READWRITE);
		cout<<"\nOk\n";
         VirtualAlloc(p, MEGABYTE, MEM_COMMIT, PAGE_READWRITE);

        getch();

   }
alenka_ej вне форума Ответить с цитированием
Старый 03.06.2010, 15:50   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

VirtualAlloc(p+MEGABYTE, MEGABYTE, MEM_COMMIT, PAGE_READWRITE);
этим мы выделим следующий метр.
и тд.
или в чем сложность то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.06.2010, 15:54   #3
alenka_ej
 
Регистрация: 08.05.2010
Сообщений: 5
По умолчанию

Теперь вроде работает, спасибо большое!=) а как можно вывести на экран адреса сегментов?
alenka_ej вне форума Ответить с цитированием
Старый 03.06.2010, 16:05   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

VirtualAlloc вам возвращает адрес.
можете его запомнить и вывести
int t=(int)VirtualAlloc(...);
cout<<t;
правда лучше через printf делать(красивее будет)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VirtualAlloc и VirtualProtect? VintProg Общие вопросы Delphi 1 29.06.2009 11:50