How do I pre-allocate an output buffer for the encoder?

To pre-allocate your own output buffer, you have to first declare an OssBuf type variable. Next, you have to use a memory allocating function (such as malloc() or calloc()) to allocate the needed memory buffer and set the value field of the OssBuf structure to point to the beginning of this buffer. Finally, you have to set the length field of the OssBuf structure to the length in bytes of the allocated buffer. Then, you can call the encoder and it will use your allocated buffer to store its output.

This procedure is illustrated as follows:

OssBuf encodedData;    
. . . .    
encodedData.value = (char )malloc(1024 * sizeof(char));    
encodedData.length = 1024;    
rc = ossEncode(world, myPduNum, &myData, &encodedData);    

To determine the length of the buffer without calling ossEncode(), call ossDetermineEncodingLength().

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:
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.