msc memory allocation problem

craig.s.curtin curtin at cbnewse.ATT.COM
Sat Feb 17 04:10:52 AEST 1990




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



More information about the Comp.lang.c mailing list