PDA

View Full Version : HeapFree



samin_panahi
یک شنبه 27 اردیبهشت 1394, 11:24 صبح
سلام
چطور می تونم دو تا بافری که با HeapAlloc تعریف کردم و با lstrcatW ادغامشون کردم رو free کنم؟
اینجوری نوشتم بریک می کنه

lstrcatW(myBuffer, myBuffer2);
//...
HeapFree(GetProcessHeap(), HEAP_ZERO_MEMORY, myBuffer);
HeapFree(GetProcessHeap(), HEAP_ZERO_MEMORY, myBuffer2);


اما lstrcatW رو بر می دارم راحت فری می شه

#target
یک شنبه 27 اردیبهشت 1394, 12:33 عصر
احتمالا همون تابع هم بخاطر سایز نادرست بافرها ایراد داره
بهتره بجای lstrcatW از چیزی مثل StringCchCat (https://msdn.microsoft.com/en-us/library/windows/desktop/ms647518(v=vs.85).aspx) استفاده کنین

samin_panahi
یک شنبه 27 اردیبهشت 1394, 13:24 عصر
اینجوری نوشتم


nSize = lstrlen(myBuffer) + lstrlen(myBuffer2) +1;
StringCchCatW(myBuffer, nSize, myBuffer2);
//...
HeapFree(GetProcessHeap(), HEAP_ZERO_MEMORY, myBuffer);
HeapFree(GetProcessHeap(), HEAP_ZERO_MEMORY, myBuffer2);


اما بازم break می کنه

#target
یک شنبه 27 اردیبهشت 1394, 14:27 عصر
به myBuffer همونقدر فضا دادین ؟

samin_panahi
یک شنبه 27 اردیبهشت 1394, 18:52 عصر
به myBuffer همونقدر فضا دادین ؟

نه اون سایز محتویاتش بود
الان سایز خودش رو دادم فکر کنم درست شد
ممنون