This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: change to gcc from lcc


Interesting. At least. There should be a warning from gcc.

Eric

2008/11/14 Tim München <muenchen@physik.uni-wuppertal.de>:
> On Friday 14 November 2008 10:09:22 Anna Sidera wrote:
>> Hello,
>>
>> The following code works in lcc in windows but it does not work in gcc in
>> unix. I think it is memory problem. In lcc there is an option to use more
>> temporary memory than the default. Is there something similar in gcc?
>>
>> #include <stdio.h>
>> #include <math.h>
>> #include <stdlib.h>
>> #include <time.h>
>> int main()
>> {
>> int i, j;
>> int buffer1[250][1000000];
>> for (i=0; i<250; i++) {
>> for (j=0; j<1000000; j++) {
>>          buffer1[i][j]=0;
>> }
>> }
>> printf("\nThe program finished successfully\n");
>> return 0;
>> }
>>
>> Many Thanks,
>> Anna
>
> Anna,
>
> the code you provided tries to allocate a huge chunk of memory on the stack.
> This is not the way things should be done. Even if the compiler allows
> for "using more temporary memory than the default", the solution is by no
> means portable. A way more elegant solution is to use memory on the heap:
>
> int main()
> {
> int i, j;
> int *buf = (int*) malloc (250 * 1000000 * sizeof(int));
> for (i=0; i<250; i++) {
> for (j=0; j<1000000; j++) {
> buf[i][j]=0;
> }
> }
> free (buf);
> printf("\nYay! :D\n");
> return 0;
> }
>
>
> Tim
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]