Zwracanie wskaźnika do lokalnej zmiennej
Ostatnio zmodyfikowano 2013-07-15 12:21
rwfx1911 Temat założony przez niniejszego użytkownika |
Zwracanie wskaźnika do lokalnej zmiennej » 2013-07-15 00:55:24 Mam taką funkcje, wiem dlaczego nie działa ale nie potrafie jej naprawić więc to takie pytanie "Do you haz teh codez?". Trzeba użyć dynamicznej alokacji pamięci. Czasami muszę popatrzeć na kod żeby zrozumieć, z góry dzięki. vector < TCHAR * > GetListOfModules( HANDLE proc ) { HMODULE hMods[ 1024 ]; DWORD cbNeeded; vector < TCHAR * > ListOfNames; if( EnumProcessModules( proc, hMods, sizeof( hMods ), & cbNeeded ) ) { for( int i = 0; i <( cbNeeded / sizeof( HMODULE ) ); i++ ) { TCHAR szModName[ MAX_PATH ]; if( GetModuleFileNameEx( proc, hMods[ i ], szModName, sizeof( szModName ) / sizeof( TCHAR ) ) ) { char * ptr = strrchr( szModName, '\\' ); if( ptr != NULL ) strcpy( szModName, ptr + 1 ); ListOfNames.push_back(( TCHAR * ) szModName ); } } } return ListOfNames; }
void main() { vector < TCHAR * > test; test = GetListOfModules( GetHandleByName( "explorer.exe" ) ); cin.get(); }
|
|
unimator |
» 2013-07-15 02:00:43 To: strcpy( szModName, ptr + 1 );
ListOfNames.push_back(( TCHAR * ) szModName );
nie będzie działać tak jak zapewne myślisz. SzModName jest ciągle przez Ciebie nadpisywane i wszystkie elementy ListOfNames na to samo wskazują koniec końców. W main próbujesz się odwołać właśnie do tej zmiennej (lokalnej). |
|
rwfx1911 Temat założony przez niniejszego użytkownika |
» 2013-07-15 11:51:09 Ale jak powinno być dobrze? |
|
pekfos |
» 2013-07-15 12:11:45 Z std::string/std::wstring. |
|
rwfx1911 Temat założony przez niniejszego użytkownika |
» 2013-07-15 12:13:05 Wiem, że można jakoś z dynamiczną alokacją pamięci i chciałbym zobaczyć jak. Trzeci argument GetModuleFileNameEx wymaga typu LPSTR i nie da sie przeprowadzić konwersji ze stringu. |
|
pekfos |
» 2013-07-15 12:20:20 W takim razie zaalokuj odpowiednio duży blok pamięci, skopiuj dane z tablicy i wrzuć do vectora. Potem musisz ten blok zwolnić. |
|
rwfx1911 Temat założony przez niniejszego użytkownika |
» 2013-07-15 12:21:39 OK, już sobie poradziłem. Dzięki. |
|
« 1 » |