2017-07-31 175 views
0

我用rapidJson来读取json数据。我可以在Debug和Release模式下构建我的应用程序,但应用程序在Release模式下崩溃。rapidJson:在发布模式下崩溃

using namespace rapidjson; 
    ... 
    char *buffer; 
    long fileSize; 
    size_t fileReadingResult; 

    //obtain file size 
    fseek(pFile, 0, SEEK_END); 
    fileSize = ftell(pFile); 
    if (fileSize <= 0) return false; 
    rewind(pFile); 

    //allocate memory to contain the whole file 
    buffer = (char *)malloc(sizeof(char)*fileSize); 
    if (buffer == NULL) return false; 

    //copy the file into the buffer 
    fileReadingResult = fread(buffer, 1, fileSize, pFile); 
    if (fileReadingResult != fileSize) return false; 
    buffer[fileSize] = 0; 

    Document document; 
    document.Parse(buffer); 

当我在Release模式下运行它时,遇到一个Unhanded exception; A heap has been corrupted。 在malloc.c文件在"res = _heap_alloc(size)的应用程序中断

void * __cdecl _malloc_base (size_t size) 
{ 
    void *res = NULL; 

// validate size 
if (size <= _HEAP_MAXREQ) { 
    for (;;) { 

     // allocate memory block 
     res = _heap_alloc(size); 

     // if successful allocation, return pointer to memory 
     // if new handling turned off altogether, return NULL 

     if (res != NULL) 
     { 
      break; 
     } 
     if (_newmode == 0) 
     { 
      errno = ENOMEM; 
      break; 
     } 

     // call installed new handler 
     if (!_callnewh(size)) 
      break; 

     // new handler was successful -- try to allocate again 
    } 

它运行在调试模式下的罚款。

回答

0

也许它可能是memory leak问题与Malloc,因为它在Debug中运行良好,但是当你延长应用程序时间会导致崩溃。

你使用后freebuffer吗?

相关问题