Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 361459
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T12:53:32+00:00 2026-05-12T12:53:32+00:00

I am writing a custom textfile-data parser (JSON-like) and I have lost many hours

  • 0

I am writing a custom textfile-data parser (JSON-like) and I have lost many hours trying to find a tiny memory leak in it.

I am using VC++2008 and the commands _CrtMemCheckpoint and _CrtDumpMemoryLeaks to check for memory leaks.

When I parse any file and then remove it from memory (alongside any other memory claimed), I get a 16 bytes memory leak which looks like this :

{290} normal block at 0x00486AF0, 16 bytes long.
Data: <  H `aH  hH  eH > C0 9A 48 00 60 61 48 00 18 68 48 00 D8 65 48 00

I have managed to narrow the "offending" line of code down to this :

classDefinitions[FastStr(cString)] = classDef;

classDefinitions is an std::map<FastStr, FSLClassDefinition*> and is a private member of my parser class.

FastStr is a simple char* "wrapper" for allowing simple c-strings as key values; it has no memory leaks (no ‘new’ commands). ‘FSLClassDefinition*’ is obviously a simple class pointer, so nothing strange there either.

Now here is the catch :

  1. this line is executed many times during the parse-process, but I only get a single 16-bytes block leaked.
  2. if I parse another file, there is not another 16-bytes memory leak
  3. If I remove the parser from memory (by having it in a {} code-block), then recreate it in another code-block and have it parse another file, then I get a second 16-bytes memory leak.

This leads me to suspect that there is a memory leak in std::map; but it could also be my mistake… I am pretty sure that’s the offending line because if I stop the parsing before it, there is no memory leak; there is memory leak if I stop the parsing just after this line.

Can anyone comment on this?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T12:53:32+00:00Added an answer on May 12, 2026 at 12:53 pm

    The "{290}" in the leak report is the sequence number of the memory allocation for the memory block that was leaked. If this sequence number is always the same, you can use _crtBreakAlloc to cause a break in the debugger when that allocation sequence number is hit. From the stack trace you can find out where this block is being allocated. Once you know where, and for what purpose, it is being allocated it tends to be fairly easy to determine why it is not being deallocated.

    Read the Debug Heap documentation to learn about _crtBreakAlloc.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 249k
  • Answers 249k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer To implement an action sheet, you must first implement the… May 13, 2026 at 8:59 am
  • Editorial Team
    Editorial Team added an answer First attempt (untested): $elts = $doc->getElementsByTagName('span'); foreach ($elts as $elt)… May 13, 2026 at 8:59 am
  • Editorial Team
    Editorial Team added an answer Your implementation is totally wrong, that is not how you… May 13, 2026 at 8:59 am

Related Questions

I am writing a custom session handler in PHP and trying to make the
I am writing a custom ConfigurationElementCollection for a custom ConfigurationHandler in C#.NET 3.5 and
I am writing a custom xulrunner-based app and I wish to have some files
I am writing a custom .pac script for use with Firefox. Following numerous examples

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.