Xref: utzoo alt.msdos.programmer:1268 comp.lang.c:26013 Path: utzoo!utgpu!watserv1!watmath!att!cbnewse!curtin From: curtin@cbnewse.ATT.COM (craig.s.curtin) Newsgroups: alt.msdos.programmer,comp.lang.c Subject: msc memory allocation problem Keywords: calloc()/_memavl()/free() Message-ID: <13110@cbnewse.ATT.COM> Date: 16 Feb 90 17:10:52 GMT Distribution: na Organization: AT&T Bell Laboratories Lines: 47 hello MSC5X gurus this is using MSC5.1, MS-DOS 4.01. i am having a memory problem with calloc/free and have had no success checking that the memory has been returned to MS-DOS. i have been trying to use the msc function _memavl() (telling you how much memory is available) and get the same value from _memval() regardless when it is called. (actually i would like to do sbrk(0) and verify where the heap point is but this does not work for the /AL (Large) model according to the manual. scenerio: > >Buffer *bp; > (A) >fprintf(stderr,"FREE memory %u\n",_memavl());/*print current value*/ > >bp = (Buffer *) calloc(1, sizeof (Buffer));/* allocate memory */ > (B) >fprintf(stderr,"FREE memory %u\n",_memavl());/*print new current value*/ > >free(bp);/* return memory */ > (A) >fprintf(stderr,"FREE memory %u\n",_memavl()); > my feeling is that B should be: B = A-sizeof(Buffer); but when it is executed A=B; the program runs fine otherwise. but i was getting memory allocation error cannot load command.com after execution. this occurs only when i put the above code in a loop 10,000 times. (just a for loop) (i wanted to make darn sure that the memory was getting free'd up after something weird is happening) thanks for the help any questions/comments/flames please respond via e-mail. thanks for craig curtin att!ihlpy!curtin