Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    9

    [C++] Memoria e lettura registro

    Ciao a tutti, ho un problema con la lettura di una stringa dal registro di sistema.

    Ho ereditato un programma C++ da un altro programmatore (io non l'avevo mai utilizzato prima...) e sto provando ad eliminare alcuni bug che ci sono.

    Ora il problema consiste nell'allocazione di memoria continua fino all'arresto dell'eseguibile, ho trovato quale parte del programma ha il problema, ma non riesco a capire che cosa non va.

    questo è il codice che non va (alloca memoria ma non la rilascia)

    codice:
    char * getRegKeyString(LPCTSTR subKey, LPCTSTR valueName) {
    
    	// Legge il percorso del file di configurazione dal registro di sistema
    	int ret;
    	HKEY hKey; 
    	char Buffer[MAX_PATH];
    	
    	DWORD dwBufLen=MAX_PATH;
    
    	char *pErrorMSG = new char[1000];
    	char *pKeyDir = new char[0xFF]; 
    	char *pKeyName = new char[0xFF]; 
    	
    	ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, subKey, 0, KEY_QUERY_VALUE, &hKey); 
    	if( ret != ERROR_SUCCESS ) {
    		wsprintf(pErrorMSG,"[getRegKeyString] Impossibile accedere al Registro di Sistema (%s)(ERRORCODE=%d)", subKey, ret); 
    		writeErrorEventLog(pErrorMSG);
    	}; 
    
    	ret = RegQueryValueEx( hKey, valueName, NULL, NULL, (LPBYTE) Buffer, &dwBufLen);
    	if	((ret != ERROR_SUCCESS) || (dwBufLen > MAX_PATH)) {
    		wsprintf(pErrorMSG,"[getRegKeyString] Impossibile leggere la chiave %s (ERRORCODE=%d)", valueName, ret); 
    		writeErrorEventLog(pErrorMSG);
    	}
    
    	RegCloseKey(hKey);
    
    	//wsprintf(pErrorMSG,"[getRegKeyString] %s=%s", valueName, Buffer); 
    	//writeInfoEventLog(pErrorMSG);
    
    	return Buffer;
    }
    Qualcuno di voi sa dirmi cosa c'è che non torna?

    Grazie
    Ciao

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sembra evidente ... ci sono tre new ... quando fai le delete ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    9
    Perfetto grazie, ora funziona!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.