Mail Archives: cygwin/2005/07/05/09:33:38
On Jul 5 10:11, Ivan Mari wrote:
> This code produces an access violation.
Yep, no wonder.
> Commenting out the arr[] it works
> fine. Leaving the arr[] and commenting out the strcat works too.
> Anyway on a Linux with GCC 3.4.2 it works as it is presented here without
> problems
Only coincidentally.
> #include <stdarg.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
>
> int main()
> {
>
> int arr[] = {1,2,3,4,5};
>
> char *buf = (char *) malloc (80);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Using malloc does *not* initialize the allocated area to all zero.
> if (buf == ((void *)0))
> printf("LKD error: Not enough memory\n");
>
> int a = 20;
>
> {char tempBuffer[80];int bsize;snprintf (tempBuffer,80,
^^^^^^^^^
uninitialized auto variable
> "Ivan %d", a );bsize += strlen(tempBuffer) + 1; buf = (char *) realloc
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
adding a value to an uninitialized auto variable
> (buf, bsize); strcat(buf, tempBuffer);}
^^^^^^^^^^^^^^^^^^^^^^^
Using strcat on an uninitialized buffer
>
> return 0;
> }
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader mailto:cygwin AT cygwin DOT com
Red Hat, Inc.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -