**Q:**
I'm allocating a large array for some numeric work,
using the line

double *array = malloc(300 * 300 * sizeof(double));

**A:**
Notice that 300 x 300 is 90,000,
which will not fit in a 16-bit `int`,
even before you multiply it by `sizeof(double)`.
If you
need to allocate
this much
memory,
you'll have to be careful.
If `size_t`
(the type accepted by `malloc`)
is a 32-bit type on your machine,
but `int` is 16 bits,
you might be able to get away with writing
`300 * (300 * sizeof(double))`
(see question 3.14).
Otherwise,
you'll have to break
your data structure
up into smaller chunks,
or use a 32-bit machine
or compiler,
or use
some nonstandard memory allocation functions.
See also
questions 7.15 and 19.23.

about this FAQ list about eskimo search feedback copyright