Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использованеи shared_array,shared_ptr... 
:(
    Опции темы
Druidoff
Дата 16.2.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ помогите как обернтуть в смартопоинер массив Структур, У мя то ошибки какието выкидывает, то пога при дебаге вылетает, и чете читал я документацию ни че не понял:
Вот так я делаю:



boost::shared_array<WTS_PROCESS_INFO*> procinfo(new WTS_PROCESS_INFO*,WTSFreeMemory); 
Вроде пре дебаге на матерится
потом:
вызываю функция 
DWORD procCount;
if (WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE,0, 1,procinfo.get(), &procCount)==0 )
{ 
printf("\nErro enum sess %d",GetLastError());
}
Все пока нормально!!
А кода пытаюсь обратится уже к полям струтуры:
например 

printf("%s"W2A( procinfo.operator [](1)->pProcessName));

то при дебаге Вылетает ошибка "Access violation reading location"!!!
Обясните в че я не прав, Желательно на примере!!!!
Пасиба!!
PM MAIL   Вверх
Fazil6
Дата 16.2.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 35
Всего: 60



например так


Код

const int WTS_PROCESS_INFO_SIZE = 100; // например такой нам нужен размер

typedef boost::shared_array<WTS_PROCESS_INFO> WPIArray;


WPIArray procinfo(new WTS_PROCESS_INFO[WTS_PROCESS_INFO_SIZE],WTSFreeMemory); 

WTS_PROCESS_INFO wp;

procinfo[1] =  wpi;

printf("%s"W2A( procinfo[1].pProcessName));



PM MAIL   Вверх
Druidoff
Дата 16.2.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извените  за такую безграмотность я делаю так


const int WTS_PROCESS_INFO_SIZE = 100; // например такой нам нужен размер
typedef boost::shared_array<WTS_PROCESS_INFO> WPIArray;

Потом вызываю 
WPIArray procinfo(new WTS_PROCESS_INFO[WTS_PROCESS_INFO_SIZE],WTSFreeMemory); 

    if (WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE,0, 1,procinfo.get(), &procCount)==0 )
        {    
            printf("\nErro enum sess %d",GetLastError());
        }
оно выдает мне ошибку  не может преобразовать параметр 4 'WTS_PROCESS_INFOW *' to 'PWTS_PROCESS_INFOW *' 
я уже нече не понимаю: 
Сто пудово работает так:

WTS_PROCESS_INFO *procinfo;
if (WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE,0, 1,&procinfo, &procCount)==0 )
        {    
            printf("\nErro enum sess %d",GetLastError());
        }

И хотелось его обернуть в смарт-поинтер потому-что используются  exception
А как юз смартопоитер  я че то воще запутался!!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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