Внезапная утечка памяти - PullRequest
0 голосов
/ 01 июля 2019

Среда: Windows 10 Home 10.0.16299

MS Visual Studio Community 2017 Версия 15.6.6

Параметры компиляции: 64 бит - Набор многобайтовых символов

СЧерез несколько дней я столкнулся с очень раздражающей проблемой утечек памяти.Я много пробовал, но проблемы все еще остаются.

Неожиданно я получил следующие сообщения о выходе из приложения:

{7196} normal block at 0x000001FD42D0EA90, 66 bytes long.
 Data: <`  f    )   )   > 60 C6 CC 66 F7 7F 00 00 29 00 00 00 29 00 00 00 

f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\oleinit.cpp(84) : {749} client block at 0x000001FD40F735F0, subtype c0, 104 bytes long.

f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dumpcont.cpp(23) : atlTraceGeneral - a CCmdTarget object at $000001FD40F735F0, 104 bytes long

f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {747} normal block at 0x000001FD40F78750, 248 bytes long. Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(794) : {746} normal block at 0x000001FD40F5F1D0, 8 bytes long.
 Data: <   f    > F0 BB A3 66 F7 7F 00 00 

, а также я получил следующие сообщения о выходе из приложения (я получил 12на самом деле)

{348} normal block at 0x00000236C88FE4A0, 69 bytes long.
 Data: <` >     ,   ,   > 60 C6 3E BE F6 7F 00 00 2C 00 00 00 2C 00 00 00 

Итак, когда я добавляю следующую строку .....

_CrtSetBreakAlloc(348);

Компилятор разрывается с сообщением xxxx.exe сработал точку останова. *+1018 *

Всегда то же самое место: линия

* * * тысяча двадцать один +1022 * проблема с функцией возникшие, которые прошли CString в качестве эталонного параметра.Вот так:
int CFoo::GetData(CString strMainData, CString& strData, int nPos, int nLen)
{
    strData = strMainData.Mid(nPos + 2, nLen);

    return ( nPos + 2 + nLen);
}

Любая подсказка, почему я получил это?Я работаю над этим приложением уже несколько недель.Я никогда не сталкивался с этой проблемой.Я изменил функцию, чтобы использовать char * в качестве параметра и копию CSring в вызывающей функции, но проблема остается.Такое поведение появилось две недели назад (но я не заметил этого напрямую).Это могут быть настройки компилятора?

...