Ошибка выполнения QueryPerformanceCounter

Эй, я использую QueryPerformanceCounter, чтобы подсчитать, сколько времени займет функция в миллисекундах, но я получаю эту ошибку времени выполнения:

Run-Time Check Failure #2 - Stack around variable 'time1' is corrupted.

Я искал и попробовал все, и я не могу понять эту ошибку. Кто-нибудь может мне помочь?
Вот код, где это происходит: 7

void print()
{
unsigned long int time1 = 0;
unsigned long int time2 = 0;
QueryPerformanceCounter((LARGE_INTEGER*)&time1);
//Loop through the elements in the array.
for(int index = 0; index < num_elements; index++)
{
//Print out the array index and the arrays elements.
cout <<"Index: " << index << "\tElement: " << m_array[index]<<endl;
}
//Prints out the number of elements and the size of the array.
cout<< "\nNumber of elements: " << num_elements;
cout<< "\nSize of the array: " << size << "\n";

QueryPerformanceCounter((LARGE_INTEGER*)&time2);
cout << "\nTime Taken : " << time1 - time2 <<endl;
}

0

Решение

Проблема здесь QueryPerformanceCounter((LARGE_INTEGER*)&time1);

Не использовать unsigned long int при передаче своего адреса QueryPerformanceCounter,

unsigned long int гарантирует только минимум 32 бита.

Используйте 64-битную переменную

#include <cstdint>    // + include this
int64_t

или же

long long int
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]