curtin@cbnewse.ATT.COM (craig.s.curtin) (02/17/90)
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
CMH117@psuvm.psu.edu (Charles Hannum) (02/19/90)
"%u" prints a short (16-bit) integer. Your pointers are 32 bits. Use "%lu". Virtually, - Charles Martin Hannum II "Klein bottle for sale ... inquire within." (That's Charles to you!) "To life immortal!" cmh117@psuvm.{bitnet,psu.edu} "No noozzzz izzz netzzzsnoozzzzz..." c9h@psuecl.{bitnet,psu.edu} "Mem'ry, all alone in the moonlight ..."