Using the free(*ptr) routine and getting an exception, "Exception: STATUS_ACCESS_VIOLATION"

Dan Kegel dank@kegel.com
Mon Jan 14 04:52:00 GMT 2013


On Sun, Jan 13, 2013 at 7:55 PM, YZFury <yzfury@gmail.com> wrote:
> int *ptr = malloc(sizeof(*ptr));
>         int x = 87;
>         ptr = &x;
>         printf("%d", *ptr);
>         free(ptr);//it goes wrong here

As you probably know, you can't call free() on a pointer
that didn't come from malloc().  ptr's first value came from malloc,
but you overwrote that with
   ptr = &x;
Perhaps you meant
   *ptr = x;
So you're a level of indirection off.
- Dan

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list