drem1lin
@drem1lin
чуть программист, чуть чуть админ...

Почему возникает предупреждение C6386?

есть вот такой код, который для каждого объекта из folderList создает свой поток

DWORD hThreadArraySize = sizeof(HANDLE);
	hThreadArraySize*=folderList.size();
	hThreadArray = (HANDLE*)VirtualAlloc(NULL, hThreadArraySize, MEM_COMMIT, PAGE_READWRITE);
        for (std::list<FOLDERDESCRIPTOR>::iterator it = folderList.begin(); it != folderList.end(); it++, i++)
	{
               hThreadArray[i] = (*it).hThread = CreateThread();
	}

И на него выдается предупреждение анализатора кода
Warning C6386 Buffer overrun while writing to 'hThreadArray': the writable size is 'hThreadArraySize' bytes, but '8' bytes might be written.

Почему оно возникает и как исправить? я все размеры проверил, все хорошо. Но что то же ему не нравистя
  • Вопрос задан
  • 808 просмотров
Пригласить эксперта
Ответы на вопрос 1
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
LPVOID WINAPI VirtualAlloc(
  _In_opt_ LPVOID lpAddress,
  _In_     SIZE_T dwSize,     //Почему dwSize (hThreadArraySize) у вас тип DWORD, а не SIZE_T
  _In_     DWORD  flAllocationType,
  _In_     DWORD  flProtect
);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы