You can allocate the memory using a user defined heap. After you finished your work, you can dispose of the user defined heap and the system will free all memory taken from that heap. You don't have to store any pointers to the memory.

http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/topic/apis/ile8a1TOC.htm

It is not a garbage collector but may help you.

-----Original Message-----
From: c400-l-bounces+mihael.schmidt=rossmann.de@xxxxxxxxxxxx [mailto:c400-l-bounces+mihael.schmidt=rossmann.de@xxxxxxxxxxxx] On Behalf Of Gangasani, Bhargava
Sent: Wednesday, May 26, 2010 3:22 PM
To: C programming iSeries / AS400
Subject: Re: [C400-L] MCH0601 and MCH6902 issues


Thank you.

This is very old program and can not catch author.

I am checking for the null character availability while doing string
copy .

Sorry about free(): After returning from the program I think I must free
the memory right. If not I am keep on executing malloc and not freeing
the memory, Is itn't cause a problem. Do we have something similar to
GARBAGE collector (java), which frees memory when it there is no pointer
pointing to it.



-----Original Message-----
From: c400-l-bounces+bhargava.gangasani=broadridge.com@xxxxxxxxxxxx
[mailto:c400-l-bounces+bhargava.gangasani=broadridge.com@xxxxxxxxxxxx]
On Behalf Of Dennis Lovelady
Sent: Wednesday, May 26, 2010 5:59 PM
To: 'C programming iSeries / AS400'
Subject: Re: [C400-L] MCH0601 and MCH6902 issues

/***Declaration ***/
crtsub wwcsub;
crtsub *csub_pt; /** where CRTSUB is a data structure.**/
In the code I have two statements one after the other
csub_pt =
malloc(sizeof (crtsub));
csub_pt = &wwcsub;
Note: it is #include <sys/errno.h> //// What is the
perpose
of it???

Its looks like strange , cusb_pt is getting overridden by the address
of the variable. So what is the point of malloc.

I doubt anyone here can tell you why there are consecutive assignments
for
csub_pt. Have you spoken with the author?

So I commented this like (malloc ), but then got the issue below after
20 calls to this program in the same job.

At end of the program I have
free(csub_pt); --------- This is failing saying

Yes, of course! Since csub_pt does not contain the address of storage
that
you have malloc()'d you should get this error.

In your post to RPG400-L you showed an instruction that was failing, and
it
included at least three pointers. (One was a pointer that was
redirected
from another pointer.) Given the above, and assuming that nothing else
has
changed csub_pt along the way, it is likely that csub_pt is not your
issue.

Again, you have not provided enough information for any diagnosis of
what
might be wrong. One that I did not point out on the RPG400-L list is
that
even if your pointers are all OK, the strcpy() instruction can result in
this error if it doesn't find an end of string (x'00') before the
storage
extent is reached (on the Source or the Dest side).

Answers to other questions in that original post: You must not free
storage
that you still need; you should (spelled m-u-s-t) free storage that you
don't need. Failure to allocate memory (you've used too much - if
that's
even possible ?!?!) would manifest itself differently - the malloc()
would
fail.


Dennis Lovelady
http://www.linkedin.com/in/dennislovelady
--
Life would be so much easier if we could just look at the source code.




This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2019 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].