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
}
}