Size: a a a

2020 October 30

NS

Nikolai Sinyov in pro.cxx
Побитый Кирпич
Очевидно, что ошибка не в этом месте
const std::string logText(const char logRxTx[], const char  logInOut[], const char text[])
{
   printf("logText 1\n");
   std::string tmpCharLog;
   tmpCharLog.clear();
   tmpCharLog += logRxTx;
   tmpCharLog += TOBS_LOG_SPACER;
   tmpCharLog += logInOut;
   tmpCharLog += TOBS_LOG_SPACER;
   tmpCharLog += text;
   printf("logText 2\n");
   return tmpCharLog;
}
источник

ПК

Побитый Кирпич... in pro.cxx
Nikolai Sinyov
const std::string logText(const char logRxTx[], const char  logInOut[], const char text[])
{
   printf("logText 1\n");
   std::string tmpCharLog;
   tmpCharLog.clear();
   tmpCharLog += logRxTx;
   tmpCharLog += TOBS_LOG_SPACER;
   tmpCharLog += logInOut;
   tmpCharLog += TOBS_LOG_SPACER;
   tmpCharLog += text;
   printf("logText 2\n");
   return tmpCharLog;
}
Теперь удали лишний код, который не производит ошибку
источник

ПК

Побитый Кирпич... in pro.cxx
Посмотри с отладчиком что происходит
источник

NS

Nikolai Sinyov in pro.cxx
Nikolai Sinyov
const std::string logText(const char logRxTx[], const char  logInOut[], const char text[])
{
   printf("logText 1\n");
   std::string tmpCharLog;
   tmpCharLog.clear();
   tmpCharLog += logRxTx;
   tmpCharLog += TOBS_LOG_SPACER;
   tmpCharLog += logInOut;
   tmpCharLog += TOBS_LOG_SPACER;
   tmpCharLog += text;
   printf("logText 2\n");
   return tmpCharLog;
}
Причем до этого , 10 вызовов этого метода работает нормально.
источник

NS

Nikolai Sinyov in pro.cxx
Побитый Кирпич
Посмотри с отладчиком что происходит
При выделение памяти в строке std::string tmpCharLog выкидывает исключение на куске кода
источник

NS

Nikolai Sinyov in pro.cxx
Nikolai Sinyov
// STRUCT _Default_allocate_traits
struct _Default_allocate_traits {
   __declspec(allocator) static void* _Allocate(const size_t _Bytes) {
       return ::operator new(_Bytes);
   }

из файла  xmemory.
вот этом
источник

ПК

Побитый Кирпич... in pro.cxx
Nikolai Sinyov
При выделение памяти в строке std::string tmpCharLog выкидывает исключение на куске кода
И какие размеры там? Откуда они берутся?
источник

NS

Nikolai Sinyov in pro.cxx
Побитый Кирпич
И какие размеры там? Откуда они берутся?
Какие именно размеры? Я не понимаю почему. Могу скинуть трейс того, как он до туда доходит
источник

ПК

Побитый Кирпич... in pro.cxx
Nikolai Sinyov
Какие именно размеры? Я не понимаю почему. Могу скинуть трейс того, как он до туда доходит
У тебя bad_alloc происходит по какой причине?
источник

М

Максим in pro.cxx
понял
источник

ПК

Побитый Кирпич... in pro.cxx
У тебя памяти нет? Размер слишком большой в запросе на выделение памяти?
источник

NS

Nikolai Sinyov in pro.cxx
Побитый Кирпич
У тебя bad_alloc происходит по какой причине?
ДА я не понимаю. Я определил простой std:;string
источник

NS

Nikolai Sinyov in pro.cxx
Я ничего так не делаю
источник

ПК

Побитый Кирпич... in pro.cxx
Nikolai Sinyov
ДА я не понимаю. Я определил простой std:;string
В этом месте вообще не должна память выделяться, ты удалил весь лишний код?
источник

NS

Nikolai Sinyov in pro.cxx
Побитый Кирпич
В этом месте вообще не должна память выделяться, ты удалил весь лишний код?
Да, а что там удалять? принт перед ним? Дальше обьявления код не выполняется
источник

ПК

Побитый Кирпич... in pro.cxx
Nikolai Sinyov
Да, а что там удалять? принт перед ним? Дальше обьявления код не выполняется
И что? Все равно удаляй
источник

ПК

Побитый Кирпич... in pro.cxx
Почему вообще в дефолтном конструкторе строки выделяется память?
источник

NS

Nikolai Sinyov in pro.cxx
Побитый Кирпич
И что? Все равно удаляй
const std::string logText(const char logRxTx[], const char  logInOut[], const char text[])
{

   std::string tmpCharLog;

   return tmpCharLog;
}

Больше
нечего удалять
источник

NS

Nikolai Sinyov in pro.cxx
Побитый Кирпич
Почему вообще в дефолтном конструкторе строки выделяется память?
Если бы я знал ответ на этот вопрос , то точно бы все решил. Я не понимаю, почему вообще идет вызов
источник

ПК

Побитый Кирпич... in pro.cxx
Nikolai Sinyov
Если бы я знал ответ на этот вопрос , то точно бы все решил. Я не понимаю, почему вообще идет вызов
Дак пройди дебагером
источник