Size: a a a

IT KPI C/C++ ХВ (не UB)

2020 November 13

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Vladislav Tolstikov
так подожди, я нигде не вижу локального объявления перменной temp, она выходит у тебя одна на все потоки...
Есть, есть
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Сразу в начале for
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
Tony Lutsenko
uLongInt uLongInt::operator*(const uLongInt& given) const
{
   uLongInt result{};

   int givlen = given.length();
   if (givlen > number.size())
 result = given * *this;
   else
   {
   if (givlen > 0)
   {
 auto thread_arr = new std::thread[givlen];
 auto results_get = new uLongInt[givlen];
 for (int i = givlen - 1; i >= 0; i--)
 {
       thread_arr[i] = std::thread([&]() {
              uLongInt temp{};
       temp = operator*(given[i]);
       temp.move_arr(i);
       results_get[i] = temp;
       });
 }
 for (int i = 0; i < givlen; i++)
 {
   thread_arr[i].join();
 }
 result = RecursiveSum(results_get, givlen);
   }
   }

   return result;
}
тут нету
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
а
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
увидел))
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Vladislav Tolstikov
а что такое temp.move_arr(i) ?
   uLongInt& move_arr(int i)
   {
       int s = number.size();
       if (i > 0)
       {
           for (int k = 0; k < i; k++)
               number.emplace_back();
           memmove(&(number[i]), &(number[0]), s*8);
           for (int k = 0; k < i; k++)
               number[k] = 0;
       }
       else if (i < 0)
       {
           memmove(&(number[0]), &(number[i]), (s - i)*8);
           for (int k = 0; k < i; k++)
               number.pop_back();
       }
       return *this;
   }
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
так и еще
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
попробуй тут
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
thread_arr[i] = std::thread([&]()
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
передавать все по значению
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
то есть поставить =
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Я думал над этим
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
и по хорошему что бы не было утечек
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
лучше делать
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
std::vector<std::thread> workers
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
и потом делать emplace_back
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
А где тут утечки?
источник

TL

Tony Lutsenko in IT KPI C/C++ ХВ (не UB)
Vladislav Tolstikov
и потом делать emplace_back
Интересно, почему
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
ну как минимум, ты делал new
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
но не написал delete
источник