Sponsored Content
Top Forums Programming tolower (static pointer + malloc + realloc) Post 302389079 by Loic Domaigne on Friday 22nd of January 2010 01:49:47 PM
Old 01-22-2010
Quote:
Originally Posted by limmer
POST UPDATE: Thanks for the heads up on the strlen vs sizeof. It also needs to add 1 to include the string terminator. here is the final version:
In your code, char* OUTPUT should be declared static. Otherwise, you shall run into serious troubles.

Quote:
Originally Posted by corona688
And I don't think your static variable there is doing what you think it does. You have the rough idea, it acts like a global, but I don't understand why you're using one here. Why preserve a pointer between function calls when each realloc() would almost certainly invalidate every pointer given before by STRINGtoLOWERCASE anyway?

Never call realloc() or free() on memory that didn't ultimately come from a calloc(), malloc(), or strdup(). This is true no matter what kind of pointer you store it in -- the realloc() call really has no way to tell the difference. If it's failing it's failing for other reasons.
Your second paragraph just explain why it has to be static if you go for a realloc! It is true that realloc invalidates the pointer, but to do so it needs first a valid pointer that comes from a realloc() or malloc()...

Cheers,
Loïc.
 

10 More Discussions You Might Find Interesting

1. Programming

Realloc

Can Any body give me a exampla which has the usage of realloc i want a function which uses realloc & increases /decreases the size of a pointer (0 Replies)
Discussion started by: wojtyla
0 Replies

2. Programming

pass a pointer-to-pointer, or return a pointer?

If one wants to get a start address of a array or a string or a block of memory via a function, there are at least two methods to achieve it: (1) one is to pass a pointer-to-pointer parameter, like: int my_malloc(int size, char **pmem) { *pmem=(char *)malloc(size); if(*pmem==NULL)... (11 Replies)
Discussion started by: aaronwong
11 Replies

3. IP Networking

I need HELP to Set up Coyote Linux router with 1 static IP & 64 internal static IP

hello, i need help on setting my coyote linux, i've working on this for last 5 days, can't get it to work. I've been posting this message to coyote forum, and other linux forum, but haven't get any answer yet. Hope someone here can help me...... please see my attached picture first. ... (0 Replies)
Discussion started by: dlwoaud
0 Replies

4. Programming

malloc vs realloc

Why when using realloc, john is reversed 3 times but not the other 2 names ? But if I use malloc, then the 3 names are reversed correctly ? (but then there is a memory leak) How can I reverse all 3 names without a memory leak ? char *BUFFER = NULL; char *STRREVERSE(const char *STRING) {... (5 Replies)
Discussion started by: cyler
5 Replies

5. Programming

C++ program is crashing on re-assigning const static member variable using an int pointer

Hi, Can any one tell me why my following program is crashing? #include <iostream> using namespace std; class CA { public: const static int i; }; const int CA::i = 10; int main() { int* pi = const_cast<int*>(&CA::i); *pi = 9; cout << CA::i << endl; } (6 Replies)
Discussion started by: royalibrahim
6 Replies

6. Programming

Even the Static cURL Library Isn't Static

I'm writing a program which uses curl to be run on Linux PCs which will be used by a number of different users. I cannot make the users all install curl on their individual machines, so I have tried to link curl in statically, rather than using libcurl.so. I downloaded the source and created a... (8 Replies)
Discussion started by: BrandonShw
8 Replies

7. Programming

realloc() fails

Not sure in which forum to post this. I'm trying here, in Programming. I'm working on a PC with Intel Duo processor & 2GB of ram. OS is Ubuntu 10.04. I'm having problems with a C++ program that makes extensive use of realloc(). It happens that as soon as the overall memory allocated(OS +... (14 Replies)
Discussion started by: mamboknave
14 Replies

8. Shell Programming and Scripting

toupper or tolower case of first letter of the line depending on another file

Hi I would like to read if the first letter of a line in a first file (gauche.txt) is uppercase or lowercase, and change consequently the first letter of the corresponding line in the second file (droiteInit.txt). I have done this but it won't work (I launch this using gawk -f... (16 Replies)
Discussion started by: louisJ
16 Replies

9. UNIX for Dummies Questions & Answers

Awk Help - toupper/tolower

Hi, I am learning awk and faced few queries. Kindly suggest on the same. Where it is wrong. $ awk '{if (toupper($1) ~ /a/) print $0}' inv $ awk '{if (toupper($1) ~ /A/) print $0}' inv -- Why this output Jan 13 25 15 115 Mar 15 24 34 228 Apr 31 52 63 420 May 16 34 29 208... (6 Replies)
Discussion started by: vanand420
6 Replies

10. Programming

Malloc to void pointer fails

I have a function to which I will pass a struct ID and it will return me a string. I will pass a pointer to store the name string and that pointer will be allocated memory by the function called. int ConvertIDToName(void *id, void *name, size_t *size) { int status = 0; ... (5 Replies)
Discussion started by: rupeshkp728
5 Replies
bsdmalloc(3MALLOC)														bsdmalloc(3MALLOC)

NAME
bsdmalloc - memory allocator SYNOPSIS
cc [ flag ... ] file ... -lbsdmalloc [ library ... ] char *malloc(size); unsigned size; int free( ptr); char *ptr; char *realloc( ptr, size); char *ptr; unsigned size; These routines provide a general-purpose memory allocation package. They maintain a table of free blocks for efficient allocation and coa- lescing of free storage. When there is no suitable space already free, the allocation routines call sbrk(2) to get more memory from the system. Each of the allocation routines returns a pointer to space suitably aligned for storage of any type of object. Each returns a null pointer if the request cannot be completed. The malloc() function returns a pointer to a block of at least size bytes, which is appropriately aligned. The free() function releases a previously allocated block. Its argument is a pointer to a block previously allocated by malloc() or real- loc(). The free() function does not set errno. The realloc() function changes the size of the block pointed to by ptr to size bytes and returns a pointer to the (possibly moved) block. The contents will be unchanged up to the lesser of the new and old sizes. If the new size of the block requires movement of the block, the space for the previous instantiation of the block is freed. If the new size is larger, the contents of the newly allocated portion of the block are unspecified. If ptr is NULL, realloc() behaves like malloc() for the specified size. If size is 0 and ptr is not a null pointer, the space pointed to is freed. The malloc() and realloc() functions return a null pointer if there is not enough available memory. They return a non-null pointer if size is 0. These pointers should not be dereferenced. When realloc() returns NULL, the block pointed to by ptr is left intact. Always cast the value returned by malloc() and realloc(). If malloc() or realloc() returns unsuccessfully, errno will be set to indicate the following: ENOMEM size bytes of memory cannot be allocated because it exceeds the physical limits of the system. EAGAIN There is not enough memory available at this point in time to allocate size bytes of memory; but the application could try again later. Using realloc() with a block freed before the most recent call to malloc() or realloc() results in an error. Comparative features of the various allocation libraries can be found in the umem_alloc(3MALLOC) manual page. brk(2), malloc(3C), malloc(3MALLOC), mapmalloc(3MALLOC), umem_alloc(3MALLOC) WARNINGS
Use of libbsdmalloc renders an application non-SCD compliant. The libbsdmalloc routines are incompatible with the memory allocation routines in the standard C-library (libc): malloc(3C), alloca(3C), calloc(3C), free(3C), memalign(3C), realloc(3C), and valloc(3C). 21 Mar 2005 bsdmalloc(3MALLOC)
All times are GMT -4. The time now is 11:12 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy