Salve,
credete che il seguente codice 8che mi funziona benissimo) possa portare a dei memory leaks?
una volta uscito dal primo ciclo non posso fare più delete in quanto buff non esiste più...codice:#define _CRT_SECURE_NO_WARNINGS #include <windows.h> #include <vector> #include <cstdlib> #include <ctime> #include <cstdio> #include <boost/circular_buffer.hpp> using namespace std; using namespace boost; char * getDateTime(void); const short numbuff = 5; const short buflen = 30; typedef struct { unsigned char * pData; unsigned short bufferLength; unsigned short bytesRecorded; bool flag; } Buffer; int main() { circular_buffer<Buffer*> cb(numbuff); circular_buffer<Buffer*>::const_iterator it; // fill buffer for(int i = 0; i<numbuff; i++) { // set up buffer Buffer *buff = new Buffer; ZeroMemory(buff, sizeof(Buffer)); buff->bufferLength = buflen; buff->bytesRecorded = buflen; buff->flag = true; buff->pData = new unsigned char[buflen]; buff->pData = reinterpret_cast<unsigned char *>(getDateTime()); // push buffer cb.push_back(buff); Sleep(1000); } // show elements for(int i = 0; i<(int)cb.size(); i++) { printf("%s\n", cb[i]->pData); } system("pause"); return EXIT_SUCCESS; } // getDateTime (Fri, 10 Oct 2008 14:41:59 GMT) char * getDateTime(void) { time_t rawtime; struct tm * timeinfo; time(&rawtime); timeinfo = gmtime(&rawtime); char * buffer = new char[30]; strftime(buffer,30,"%a, %d %b %Y %X GMT",timeinfo); return buffer; }



Rispondi quotando