Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оперативная память 
V
    Опции темы
BIV
Дата 19.9.2010, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Всем доброе время суток!
Вот  решил совместить 2 программы написанные на Java и Microsoft Visual Studio 2008 на C++
Значит что касается С++, нужно написать отдельную библиотеку, которая при запросе проверяет занятую оперативную память. Имею ввиду, вот включена ОС, запущены приложении, играет музыка и прочее, вот мне и нужно определить общую занимаемую оперативную память. После того как определилось, на выход передать параметры в виде числа (int или что-то другое). Это чтобы программа на языке java могла с ними дальше работать.
PM MAIL   Вверх
Alca
Дата 19.9.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50





--------------------
PM WWW ICQ Skype Jabber   Вверх
BIV
Дата 19.9.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Alca, спасибо! Очень хороший пример представлен, но вот я так и не нашел пример работы с оперативкой

Вот данные, которые даны в примере

Есть 42 процента памяти в использовании
Есть 2070388 полных Килобайтов физической памяти.
Есть 1195112 свободных Килобайтов физической памяти.
Есть 4008176 полных Килобайтов файла подкачки.
Есть 3045516 свободных Килобайтов файла подкачки.
Есть 2097024 полных Килобайта виртуальной памяти.
Есть 2089968 свободных Килобайтов виртуальной памяти.
Есть 0 свободных Килобайтов расширенной памяти.

Или я здесь чего-то туплю или просто не внимательный, но мне сейчас нужно конкретно оперативная память
PM MAIL   Вверх
Alca
Дата 19.9.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Код

printf ("There is  %*ld percent of memory in use.\n",  WIDTH, statex.dwMemoryLoad);


Это сообщение отредактировал(а) Alca - 19.9.2010, 12:00


--------------------
PM WWW ICQ Skype Jabber   Вверх
BIV
Дата 19.9.2010, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Как я понял, память тут мерят в процентах, а можно получить число занимаемой оперативки?
PM MAIL   Вверх
Alca
Дата 19.9.2010, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Цитата

GlobalMemoryStatusEx Function

Retrieves information about the system's current usage of both physical and virtual memory.

переводить не надо?


--------------------
PM WWW ICQ Skype Jabber   Вверх
BIV
Дата 19.9.2010, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Не, не надо)) Это я забыл что оперативная и физическая память, это синонимы)) Спасибо!
PM MAIL   Вверх
BIV
Дата 19.9.2010, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: нет
Всего: 1



Теперь вот такая проблема, значит написа код в дос режиме, все работает 

Код

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

#define DIV 1024

#define WIDTH 7

void main(int argc, char *argv[])
{
  MEMORYSTATUSEX statex;

  statex.dwLength = sizeof (statex);

  GlobalMemoryStatusEx (&statex);

  printf ("There is  %*ld percent of memory in use.\n",
          WIDTH, statex.dwMemoryLoad);
  printf ("There are %*I64d total Kbytes of physical memory.\n",
          WIDTH, statex.ullTotalPhys/DIV);
  printf ("There are %*I64d free Kbytes of physical memory.\n",
          WIDTH, statex.ullAvailPhys/DIV);
  printf ("There are %*I64d total Kbytes of paging file.\n",
          WIDTH, statex.ullTotalPageFile/DIV);
  printf ("There are %*I64d free Kbytes of paging file.\n",
          WIDTH, statex.ullAvailPageFile/DIV);
  printf ("There are %*I64d total Kbytes of virtual memory.\n",
          WIDTH, statex.ullTotalVirtual/DIV);
  printf ("There are %*I64d free Kbytes of virtual memory.\n",
          WIDTH, statex.ullAvailVirtual/DIV);

  printf ("There are %*I64d free Kbytes of extended memory.\n",
          WIDTH, statex.ullAvailExtendedVirtual/DIV);
}


Преблема теперь в том, что я пытаюсь присвоить все значения к переменным
Вот создаю библиотеку 

library.h
Код

#ifndef LIBRARYH
#define LIBRARYH

extern "C" _declspec(dllexport) void MemoryDll( int*, int*, int*, int*, int*, int*, int*, int* );

#endif


Course.cpp
Код

#include <windows.h>
#include <stdio.h>

#define DIV 1024
#define WIDTH 7

extern "C" _declspec(dllexport) void MemoryDll( int *a, int *b, int *c, int *d, int *e, int *f, int *g, int *h )
{
      MEMORYSTATUSEX statex;
      statex.dwLength = sizeof (statex);
      GlobalMemoryStatusEx (&statex);
      a=WIDTH, statex.dwMemoryLoad;
      b=WIDTH, statex.ullTotalPhys/DIV;
      c=WIDTH, statex.ullAvailPhys/DIV;
      d=WIDTH, statex.ullTotalPageFile/DIV;
      e=WIDTH, statex.ullAvailPageFile/DIV;
      f=WIDTH, statex.ullTotalVirtual/DIV;
      g=WIDTH, statex.ullAvailVirtual/DIV;
      h=WIDTH, statex.ullAvailExtendedVirtual/DIV;
}


Вот что выдает
Код

1>------ Build started: Project: library, Configuration: Debug Win32 ------
1>Compiling...
1>Source.cpp
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(12) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(13) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(14) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(15) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(16) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(17) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(18) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>c:\documents and settings\игорь\мои документы\visual studio 2008\projects\library\library\source.cpp(19) : error C2440: '=' : cannot convert from 'int' to 'int *'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>Build log was saved at "file://c:\Documents and Settings\Игорь\Мои документы\Visual Studio 2008\Projects\library\library\Debug\BuildLog.htm"
1>library - 8 error(s), 0 warning(s)


Как мне присвоить значения к переменным?
PM MAIL   Вверх
vnf
Дата 19.9.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 9.2.2008

Репутация: нет
Всего: 1



*a = statex.dwMemoryLoad;

Это сообщение отредактировал(а) vnf - 19.9.2010, 16:01
PM MAIL   Вверх
Alca
Дата 19.9.2010, 16:00 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



учи матчасть


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.