Hi, all,
I'm having trouble with the way the memory allocation system works in C
as implemented under alpha Linux. Here's some simple code:
------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long int *n, size;
printf("%d %d %d\n", sizeof(int), sizeof(long int), sizeof(long long
int));
size = 1;
n = (long int *) malloc(size * sizeof(int));
printf("size = %d; n = %ld\n", size, n);
size = 1000;
n = (long int *) malloc(size * sizeof(int));
printf("size = %d; n = %ld\n", size, n);
size = 100000;
n = (long int *) malloc(size * sizeof(int));
printf("size = %d; n = %ld\n", size, n);
return 0;
}
------------------------------------------------------------------------------
The output from this program using the Compaq C compiler, ccc, is:
4 8 8
size = 1; n = 4832890112
size = 1000; n = 4832890608
size = 100000; n = 2199023427600
Note that I get nearly the same results using GNU C.
Now, if, instead, I run this under Compaq's Tru64 UNIX, I get:
4 8 8
size = 1; n = 5368717568
size = 1000; n = 5368721408
size = 100000; n = 5368765536
For the large-block allocation, on alpha Linux the address is off in the
middle of nowhere (from my perspective) while on alpha Tru64 both the small-
and large-block allocations end up in approximately the same region of
address space.
My questions: (1) I am misinterpreting my results? (2) If not, why does
this happen?
Thanks in advance for any help!
-Daniel
-- T. Daniel Crawford Department of Chemistry crawdad@vt.edu Virginia Tech www.chem.vt.edu/chem-dept/crawford Voice: 540-231-7760 FAX: 540-231-3255_______________________________________________ Axp-list mailing list Axp-list@redhat.com https://listman.redhat.com/mailman/listinfo/axp-list
This archive was generated by hypermail version 2a22 on Sat Mar 3 12:54:54 2001 PST
Send any problems or questions about this archive to webmaster@alphalinux.org.