std::byte
. И от new wchar_t[len]
стоит тоже отказаться в пользу std::vector<std::byte>
.ZeroMemory(data, len)
делает фиктивную работу - только время тратит, т.к. следом буфер перезаписывается из файла.ZeroMemory
зануляет только половину буфера, т.к. параметр длины задается в байтах, а буфер у тебя из двухбайтовых.std::vector<std::byte> ReadImage( const std::wstring_view file_path )
является более осмысленной. Слово Load - это загрузка, в отношении файлов применяется к загрузке готового формата данных. Read - простое чтение данных без разбора формата. Собственно формат у тебя не разбирается, поэтому и не Load. Результатом является блок байт с известной длиной, т.е. просто будет возвращено содержимое файла. file_path
однозначно говорит, откуда будет прочитан результат, константность говорит о том, что file_path
в функции используется как есть и, стало быть, функция является чистой.char
, то это строка в ASCII. Если тип - wchar_t
, то это строка в UTF-16/UCS2. Если буфер должен содержать сырые произвольные данные, то его тип будет std::byte
.std::vector
, или - std::array
, или - std::span
. Иначе это будет бессмысленный блок памяти, в который требуется внести смысл - т.е. переписать на осмысленный код.как отправить post запросом картинку или любой другой файл через wininet
wchar_t
? n
надо настолько иначе инициализировать, что переписать надо вообще весь этот код.double h = 1 / n;
будет или 0
, или 1
.n
не инициализирована и содержит мусор, а деление тут целочисленное, 1
в результате этого деления получится только тогда, когда n
по воле электронного случая будет содержать 1
.n
по воле электронного случая будет содержать 0
.double U[n], A[n] , B[n], C[n];
n
у тебя мусор, твоя программа имеет все шансы с разбегу получить Stack Overflow в любом из запусков.x[n] = 100;
x
и залез куда-то в другую переменную. Скорее всего в C[0]
. qsort
говорит что компаратор должен иметь следующую сигнатуру:int cmp(const void *a, const void *b);
qsort
.qsort
должен дать ответ в троичном представлении, т.е. одно из значений: -1
если left
меньше right
, 0
если left
и right
эквивалентны, 1
если left
больше right
.bool
позволяет только бинарное представление. Применение типа bool
здесь - это ошибка.std::sort
. Использование этой функции заставит тебя написать компаратор правильно:const bool cmp( const s& left, const s& right )
{
if( left.bali != right.bali )
{
return left.bali > right.bali;
}
return left.name < right.name;
}
заранее говорю
Компоратор я сам уже написал
using namespace std
[1][2][3]. Рекомендую открутить это прямо сейчас и учиться сразу писать более качественный код.qsort
используешь, использовать стоит std::sort
[?]. Использование этой функции форсирует тебя написать правильную сигнатуру функции сравнения.
А кто запрещает читать данные в предварительно выделенную память вектора?