Browse Source

加大_dprintf输出缓存,改用堆。

sat23 4 years ago
parent
commit
51b56c581c
1 changed files with 15 additions and 11 deletions
  1. 15 11
      TCLCommand/TCLCommand/utils.cpp

+ 15 - 11
TCLCommand/TCLCommand/utils.cpp

@@ -22,31 +22,35 @@ namespace utils
 
     std::string _dprintf(CHAR* pszStr, ...)
     {
-        const int LOGLEN = 8912;
-        char szData[LOGLEN] = { 0 };
+        const int LOGLEN = 1024*20;
+        static char *pszData = NULL;
+        if ( pszData == NULL )
+            pszData = new char[LOGLEN];
+        else
+            memset(pszData, 0, LOGLEN);
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
-        sprintf(szData, _T("[%s %s]\n\t"), _T("Db"), CTime::GetCurrentTime().Format(_T("%H:%M:%S")));
+        sprintf(pszData, _T("[%s %s]\n\t"), _T("Db"), CTime::GetCurrentTime().Format(_T("%H:%M:%S")));
 #elif _MSC_VER >= 1500
-        _stprintf_s(szData, _T("[%s %s]\n\t"), _T("Db"), CTime::GetCurrentTime().Format(_T("%H:%M:%S")).GetString());
+        _stprintf_s(pszData, LOGLEN, _T("[%s %s]\n\t"), _T("Db"), CTime::GetCurrentTime().Format(_T("%H:%M:%S")).GetString());
 #endif
-        int len = strlen(szData);
+        int len = strlen(pszData);
         va_list args;
         va_start(args, pszStr);
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
         _vsnprintf(szData + len, LOGLEN - len, pszStr, args);
 #elif _MSC_VER >= 1500
-        _vsntprintf_s(szData + len, LOGLEN - len, _TRUNCATE, pszStr, args);
+        _vsntprintf_s(pszData + len, LOGLEN - len, _TRUNCATE, pszStr, args);
 #endif
         va_end(args);
-        if (szData[strlen(szData) - 1] != '\n')
+        if (pszData[strlen(pszData) - 1] != '\n')
 #if _MSC_VER >= 1200 && _MSC_VER < 1500
-            strcat(szData, "\n");
+            strcat(pszData, "\n");
 #elif _MSC_VER >= 1500
-            strcat_s(szData, "\n");
+            strcat_s(pszData, LOGLEN, "\n");
 #endif
-        OutputDebugStringA(szData);
+        OutputDebugStringA(pszData);
 
-        return std::string(szData);
+        return std::string(pszData);
     }
 
     std::string ByteToChars(byte b)