Subject: [cicm] Freeing Memory and Constructors

From: "Nanjundiah, Girish" <[email-masked]>
Date: Tue, 7 Jun 2011 13:16:28 -0700

Hello Everyone,

We have the following remaining questions about the CICM code and were
wondering if anyone had any ideas:

1.       Many of the functions in the CICM driver are called with a
double pointer parameter that is labeled as "out", meaning that the
parameter is expected to be pointing to a newly created instance of its
type upon the function's return (Ex: Decrypt::Stream::decrypt( Buffer**
buffer )). By allocating memory in functions like this, we introduce
memory leaks into the program since decrypt.cpp and encrypt.cpp do not
delete anything. Is this acceptable behavior or should we add member
variables with destructors into the classes to take care of cleaning up
the memory?

2.       Using _get and _set functions for accessing member variables
works but it also introduces the potential problem of depending on
uninitialized read-only member variables to set a value (Ex: We use the
read-only Key::State state variable to check if a Key::_set_identifier()
call is valid). Since we do not have any constructors defined in the
CICM spec, how are we meant to set read-only member variables (since in
IDL, read-only members only imply _get methods)?

Thanks for taking the time to read this,

-Girish