compilatore visual studio Express 2012 per Windows
vorrei cancellare gli elementi del vector,
devo usare Delete per liberare la memoria allocata con New e poi usare il metodo clear
o usare direttamente clear?.
io pensavo di utilizzare delete dentro un ciclo con un iteratore e poi clear
pero' ricevo il seguente errore.
Debug Error!
HEAP CORRUPTION DETECTED: after Normal block (#186) at 0x0095A4D0.
CRT detected that the application wrote to memory after end of heap buffer.
grazie.
codice:#include "stdafx.h" #include <windows.h> #include <iostream> #include <vector> #include <stdio.h> #include <tchar.h> #include <conio.h> using namespace std; typedef struct name_servizio { LPTSTR lpNameService; LPTSTR lpNameDisplay; DWORD dwStateCurrent; } un_servizio; void ReadServices(void); void _tmain() { ReadServices(); _getch(); } void ReadServices(void) { vector<un_servizio>unSer; vector<un_servizio>::iterator itSer; un_servizio servizioCorrente; un_servizio service; service.dwStateCurrent = 0; service.lpNameService =L"pippo"; service.lpNameDisplay =L"paperino"; servizioCorrente.lpNameService = new TCHAR[_tcslen(service.lpNameService)]; _tcscpy(servizioCorrente.lpNameService,service.lpNameService); servizioCorrente.lpNameDisplay = new TCHAR[_tcslen(service.lpNameDisplay)]; _tcscpy(servizioCorrente.lpNameDisplay,service.lpNameDisplay); servizioCorrente.dwStateCurrent = 2; unSer.push_back(servizioCorrente); servizioCorrente.dwStateCurrent = 5; unSer.push_back(servizioCorrente); servizioCorrente.dwStateCurrent = 8; unSer.push_back(servizioCorrente); itSer = unSer.begin(); for (; itSer != unSer.end(); itSer ++) { delete itSer->lpNameService;//Errore delete itSer->lpNameDisplay;//Errore } }

Rispondi quotando