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