Re: [Linux-programlama] alloca?

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Timur Aydin (ta@taydin.org)
Date: Tue 11 Apr 2006 - 20:46:49 GMT


İsmet Sönmez <isonmez@bek.org.tr> writes:

> void SCR_Fill (int x1, int y1, int x2, int y2, int ch, int colour)
> {
> int i;
> int size = (x2-x1+1) * (y2-y1+1);
> int fill = (colour << 8) + ch;
> word *buf = alloca (2*size);
> word *b = alloca (size);

...

> buf[i] = fill;
> puttext (x1, y1, x2, y2, buf);
> }
> else
> {
> for (i = 0; i < size; i++)
> b[i] = ch;-------------------->O:rnegin bosluk basiriyorum.Ama bir
> bosluk bir NULL yapiyor.
> lcd_puttext (x1, y1, x2, y2, b);
> }
> }
>

Burada b buffer'inda tasma sozkonusu. i = size / 2'den itibaren b'nin
sinirini asip buf'i bozmaya basliyorsunuz.

b word olarak tanimlanmis, ama sadece "size" kadar yer alloc
ediyorsunuz. Ya bu "2*size" olacak, yada "char *b" olarak tanimlanacak
gibime geliyor. (Bu arada 2*size yerine alloca(size * sizeof(*buf))
daha genel ve hata yapma ihtimalini dusurur.)

-- 
Timur Aydin

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.