Re: how to use malloc to reserve space for 1 million floats

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 27/08/12 11:40, Anna Sidera wrote:
> Hello,
>
> I want to use the following command:
>
> int myvariable = 1000;
> float *myarray = malloc(pow(myvariable,3)*sizeof(float));
>
> but I don't know if it will work because if sizeof(float) is equal to 4 then pow(myvariable,3)*sizeof(float) is equal to 4 billion which is larger than the maximum integer which is about 2 billion.
>
> Can you tell me what is the right way to create an array of pow(myvariable,3) floats?
>
> Many Thanks,
> Anna

How much memory do you have available?
The parameter to malloc is a size_t, you should have no problems
providing a size of 4000000000 in a 64 bit system.
If you're using a 32 bit system, then you will have problems stating
that size. But the address space is also smaller than that,
so you couldn't reserve so much memory*, even if you were able to
provide that number to malloc().

* using conventional methods. But seems silly not to be using a flat
address space nowadays...



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux