| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Использованеи shared_array,shared_ptr... |
| Автор: Druidoff 16.2.2008, 16:51 |
| Народ помогите как обернтуть в смартопоинер массив Структур, У мя то ошибки какието выкидывает, то пога при дебаге вылетает, и чете читал я документацию ни че не понял: Вот так я делаю: 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"!!! Обясните в че я не прав, Желательно на примере!!!! Пасиба!! |
| Автор: Fazil6 16.2.2008, 20:34 | ||
например так
|
| Автор: Druidoff 16.2.2008, 22:22 |
| Извените за такую безграмотность я делаю так 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 А как юз смартопоитер я че то воще запутался!! |