Why do I get a memory violation when I call ossFreePDU() on an unencoded PDU that I construct for the encoder?

The most likely scenarios are:

  • You freed the memory before calling ossFreePDU()
  • You are using a special malloc() function that you assign to world->mallocp, and an associated free() function, and this malloc()/free() uses a different memory pool or is somehow different from the malloc() that you used to allocate the block of memory.
  • The heap has been trashed (maybe by your allocating insufficient memory for the above block of memory and writing beyond the end), so when you got to freeing the memory a problem was reported.
  • You are mistaken and some addresses that you put into the PDU are invalid.

In general, all the PDUs should be allocated using malloc() for each pointer. Make sure that you do not use the stack memory accidentally. If you are using Windows, then you should make sure that you are using the data packing option matching that used to C-compile the generated .c file. For example, if you are using /Zp4 and pass asn1dflt.ms.zp4 to the ASN.1 compiler, then you should also use /Zp4 in your code that builds the unencoded PDU.

The samples included with some of the Knowledge Center answers are meant for your general understanding of the OSS products. Different versions of the products might produce slightly different outputs. Consult the products documentation and samples for the most up-to-date products information and code examples.

Contact Support
contact Our office hours
24 hours/day, 7 days/week

  • Phone: 1-888-OSS-2761 (USA and Canada)
  • Phone: 1-732-302-9669 (International)
  • Fax: 1-732-302-0023
  • Email: support@oss.com
Free Trial

Test drive the OSS Nokalva ASN.1, LTE, and XML Tools now! Your trial includes complete software, documentation, sample programs, free 24x7 technical support and more.

Learn ASN.1
Learn ASN.1

Our expert personnel can help you learn ASN.1!

We offer 4-day ASN.1 courses at our headquarters or your premises.