J'utilise une fonction que j'ai trouvé here pour enregistrer une page Web à la mémoire avec cURL:C++ casté realloc provoquant la fuite de mémoire
struct WebpageData {
char *pageData;
size_t size;
};
size_t storePage(void *input, size_t size, size_t nmemb, void *output) {
size_t realsize = size * nmemb;
struct WebpageData *page = (struct WebpageData *)output;
page->pageData = (char *)realloc(page->pageData, page->size + realsize + 1);
if(page->pageData) {
memcpy(&(page->pageData[page->size]), input, realsize);
page->size += realsize;
page->pageData[page->size] = 0;
}
return realsize;
}
et trouvez la ligne:
page->pageData = (char *)realloc(page->pageData, page->size + realsize + 1);
est à l'origine une mémoire fuite de quelques centaines d'octets par appel. Le seul vrai changement que j'ai fait de la source originale est de lancer la ligne en question à un (char *), que mon compilateur (gcc, g ++ spécifiquement si c'est un problème ac/C++, mais gcc ne compilerait pas non plus déclaration) insisté sur, mais je suppose que c'est la source de la fuite. Quelqu'un peut-il élucider?
Merci
page-> pageData [page-> size] = 0 nécessaire pour? la taille est stockée quand même. –