realloc fails in C : what next ?


 
Thread Tools Search this Thread
Top Forums Programming realloc fails in C : what next ?
# 8  
Old 09-28-2010
Quote:
Originally Posted by jossojjos
Code:
[jos@faba ~]$ ulimit -m
unlimited

But you're right, the program is trying to do something ridiculous :

Code:
   k = com.npatt*com.ncatG*sizeof(double);
   if((com.fhK=(double*)realloc(com.fhK,k)) == NULL) 
    {
    printf("%d\n",k);
    error2("oom fhK");
}

Upon execution, the reported value for k is -169522176.

Thanks a lot for your suggestion, I hadn't thought about that !

jos
Is the binary you're running a 64- or 32-bit binary?

If it's 64-bit, the use of the "%d" field in that printf() statement leads me to believe the original developer had no clear understanding of the implications of using a 64-bit memory model. That printf() field should be "%ld" for a 64-bit size_t value.

The variable "k" is defined as a "size_t", isn't it?
# 9  
Old 09-28-2010
Quote:
Originally Posted by achenle
That printf() field should be "%ld" for a 64-bit size_t value.
Assuming the version of GCC is recent enough (And I assume that it is, as "Mandriva" only started shipping in late 2005, I believe), %zu (supported under C99) is also available.
# 10  
Old 09-28-2010
the "printf("%d\n",k)" part was my addition ... and indeed, I have no idea of how 32 or 64 bit architectures change that.

But anyway, k was declared as int, so the author of the program should have done a cast to size_t, I guess ?
# 11  
Old 09-28-2010
sizeof() returns a size_t type. Instead of casting k, you would do

Code:
size_t k;

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

problem with realloc( i think is gcc :/ )

Hi everyone, i made this program. is a simple one for practising malloc, realloc and structs. I have a struct named shop as global variable in which i take the size of the matrix from the keyboard and after i malloc it. I insert the values with the fullarray() and after i print the matrix with... (7 Replies)
Discussion started by: giampoul
7 Replies

2. UNIX for Dummies Questions & Answers

about realloc routing

#include <malloc.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int* allocat_array(void) { int *array; int tmp; int n_values = 0 ; array = malloc(sizeof(int)); if(array == NULL) return NULL; while(scanf("%d",&tmp) != EOF) { ... (1 Reply)
Discussion started by: vincent__tse
1 Replies

3. 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

4. Programming

Realloc() question

b = realloc(a, 1000); if realloc succeeds and b!=a (not in-place replacement), does realloc automatically free a or I should free both a and b afterwards? thank you! (5 Replies)
Discussion started by: bashuser2
5 Replies

5. Programming

What happens when realloc() fails?

Hi, I am seeing varying results about, when realloc() fails in reallocation. Which one is correct out of the below? a) realloc() maintains the original pointer (i.e) the original pointer is left unaltered/untouched but relloc() returns the NULL value. b) original buffer pointer is lost... (3 Replies)
Discussion started by: royalibrahim
3 Replies

6. 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

7. Programming

tolower (static pointer + malloc + realloc)

N00B here. This function would be easier using a char pointer along with free. But I wish to learn how to use char static pointers (they do not require free, right ?). How do I erase the content of a static pointer ? Terminating the string works but the static pointer's content is not being... (4 Replies)
Discussion started by: limmer
4 Replies

8. Programming

help with realloc() on Linux

hi, I'm using gcc version 3.4.6 on a Red Hat system... (not sure how to determine version of glibc) when i run the following, i get: glibc detected *** realloc(): invalid next size: 0x0804a170 I'm not sure what is wrong. The error happens on the second iteration of the while loop.... (3 Replies)
Discussion started by: Andrewkl
3 Replies

9. Programming

Does realloc free fairly?

Hello, my program works properly but valgrind tells me I am not freeing allocated memory. I think the problem is in realloc. I am pretty sure I do something wrong with realloc, because I changed it a bit and valgrind noticed less errors (that the program wasn't working properly with less errors... (3 Replies)
Discussion started by: samciz
3 Replies

10. 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
Login or Register to Ask a Question