Advertisement
VladimirLavrenchuk

rapidjson static/dynamic memory with/without m64 flag

Nov 2nd, 2017
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1.     // Read whole file into a buffer
  2.     FILE* fp = fopen("test.json", "r");
  3.     fseek(fp, 0, SEEK_END);
  4.     size_t filesize = (size_t)ftell(fp);
  5.     fseek(fp, 0, SEEK_SET);
  6.     //char* buffer = (char*)malloc(filesize + 1);
  7.     char buffer[1024 * 10];// = (char*)malloc(filesize + 1);
  8.     size_t readLength = fread(buffer, 1, filesize, fp);
  9.     buffer[readLength] = '\0';
  10.     fclose(fp);
  11.  
  12.     // In situ parsing the buffer into d, buffer will also be modified
  13.     typedef GenericDocument<UTF8<>, MemoryPoolAllocator<>, MemoryPoolAllocator<>> MemDocument;
  14.     MemDocument d;
  15.     d.ParseInsitu(buffer);
  16.    
  17.     const char* key = "id";
  18.     Value::ConstMemberIterator itr = d.FindMember(key);
  19.    
  20.     if (!d.IsObject()){
  21.         printf("Not object!");
  22.         return nullptr;
  23.     }
  24.    
  25.     if (itr != d.MemberEnd())
  26.         std::cout << &itr->value << std::endl;
  27.     else
  28.         printf("NULL pointer!");
  29.        
  30.    
  31.     // 3. Stringify the DOM
  32.     StringBuffer buff;
  33.     Writer<StringBuffer> writer(buff);
  34.     d.Accept(writer);
  35.  
  36.     std::cout << buff.GetString() << std::endl;  
  37.  
  38.     // Query/manipulate the DOM here...
  39.  
  40.     //free(buffer);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement