[clug-progsig] realloc()

Rob S rob.s at telus.net
Mon Feb 28 23:15:33 PST 2005


Thank you for this tip. I've started using vim in X with syntax 
highlighting turned on. I'm not sure how to phrase it, but my code looks 
better, or simpler to understand, with this turned on.

Thanks again!

-Rob

Cade Cairns wrote:

>p.s. if you use an editor like vim with syntax highlighting turned on,
>it would have highlighted later code such as to indicate there was an
>error in your code. you might want to consider looking into using
>that, it is an invaluable tool to have!
>
>On Sun, 20 Feb 2005 09:43:39 -0700, Cade Cairns <cairnsc at gmail.com> wrote:
>  
>
>>You are missing a closing ')' character in the second argument of the
>>first realloc() call. This affects the code for the rest of the file
>>(or until a matching ')' is found), which would have caused the second
>>error. You should hvae:
>>
>>    ptr = realloc(NULL, ((strlen(array) + 1) * sizeof(char)));
>>
>>Alternatively you could remove the first '(' in the second argument
>>since it is not needed:
>>
>>    ptr = realloc(NULL, (strlen(array) + 1) * sizeof(char));
>>
>>On Sat, 19 Feb 2005 20:03:28 -0700, Rob S <rob.s at telus.net> wrote:
>>    
>>
>>>I've been learning C and I'm having a bit of trouble allocating memory
>>>with realloc() in two instances.
>>>
>>>gcc is rejecting each instance.
>>>
>>>I'd like to find out the correct useage of realloc() when allocating
>>>memory from a null pointer, and to free said memory with realloc() when
>>>its not needed anymore.
>>>
>>>Here's the code i've typed up. I was wondering if the members of the
>>>list could look at it and provide some advice?
>>>
>>>---
>>>#include <stdio.h>
>>>#include <stdlib.h>
>>>#include <string.h>
>>>
>>>main()
>>>{
>>>    char *ptr, array[] = "This is a string.";
>>>    int termination;
>>>
>>>     /* this is where the first problem is. The code is used as its used
>>>in the book, but gcc isnt accepting it, and i dont know why. When i try
>>>to compile it, gcc spits out: parse error before ';' token. */
>>>    ptr = realloc(NULL, ((strlen(array) + 1) * sizeof(char));
>>>    if (ptr != NULL)
>>>    {
>>>        termination = 0;
>>>        strcpy(ptr, array);
>>>        printf("%s\n", ptr);
>>>    /* I think this is where the problem is, but gcc says there's a
>>>parse error before "else", two lines ahead. I'm not sure whats going on
>>>here either. In the manual i'm following, the code should compile as
>>>written. I really dont know whats going on */
>>>        ptr = realloc(ptr, 0);
>>>    }
>>>    else
>>>    {
>>>       printf("realloc() failed, exiting.\n");
>>>       termination = 1;
>>>    }
>>>
>>>    return termination;
>>>}
>>>
>>>-----
>>>
>>>I havent had any problems with malloc(), calloc() or free(). I'll see if
>>>i can find some errata on the text, if there is any still on the net for
>>>this book.
>>>      
>>>
>
>
>  
>




More information about the clug-progsig mailing list