Why does this occur? *** glibc detected *** malloc(): memory corruption: 0x10013ff8 ***


 
Thread Tools Search this Thread
Top Forums Programming Why does this occur? *** glibc detected *** malloc(): memory corruption: 0x10013ff8 ***
# 1  
Old 10-30-2009
Why does this occur? *** glibc detected *** malloc(): memory corruption: 0x10013ff8 ***

there seems not to be error in this segment. In some computers, it can work well. But in others, it will give a failure.

why it ocurrs and how to deal with it?


in a function:
Code:
        if( *ver == NULL ) {
                *ver = (vertex *) malloc(sizeof(vertex));    //this line
                if( *ver == NULL ) {
                        printf("memory allocation error\n");
                }
        }


Last edited by pludi; 10-30-2009 at 10:15 AM.. Reason: code tags, please
# 2  
Old 10-30-2009
Quote:
Originally Posted by cdbug
there seems not to be error in this segment. In some computers, it can work well. But in others, it will give a failure.

why it ocurrs and how to deal with it?


in a function:
Code:
        if( *ver == NULL ) {
                *ver = (vertex *) malloc(sizeof(vertex));    //this line
                if( *ver == NULL ) {
                        printf("memory allocation error\n");
                }
        }



//tabs can not work
Hi. Is this better ?

Code:
if( ver == NULL ) 
{
   ver = (vertex *) malloc(sizeof(vertex));
   if(  ver == NULL ) 
   {
      printf("memory allocation error\n");
   }
 }


Last edited by vbe; 10-30-2009 at 12:02 PM.. Reason: added code tags in quote...
# 3  
Old 10-30-2009
does not make effect. should generate many vertices for a graph. but it will fail after 20 vertices.

can generate 20 vertices. after then, it fails. can't figure out.
# 4  
Old 10-30-2009
Can you post more of your code including the typedef of vertex...and on which platforms does it fail.
# 5  
Old 10-30-2009
Linux 3.2.3-59

Code:
struct  vertex {
        int id;
        int seq;
        int pos;
        int clique;
        int numOfVer;
        int numOfPrev;
        int numOfNext;
        int *prev;
        int *next;
        vertex *front;
        vertex *back;
        vertex *left;
        vertex *right;
};

static void make_vertex(vertex **ver, int index, int s, int ps) {
       
        *ver = NULL;
        if( *ver == NULL ) {
                *ver = (vertex *) malloc(sizeof(vertex));
                if( *ver == NULL ) {
                        printf("memory allocation error\n");
                        exit(1);
                }
        }
        (*ver)->id        = index;
        (*ver)->seq       = s;
        (*ver)->pos       = ps;
        (*ver)->clique    = 0;
        (*ver)->numOfPrev = 0;
        (*ver)->numOfVer  = 0;
        (*ver)->numOfNext = 0;
        (*ver)->prev      = NULL;
        (*ver)->next      = NULL;
        (*ver)->front     = NULL;
        (*ver)->back      = NULL;
        (*ver)->left      = NULL;
        (*ver)->right     = NULL;
}

Regards

Last edited by cdbug; 10-30-2009 at 01:55 PM..
# 6  
Old 10-30-2009
Quote:
Originally Posted by cdbug
Linux 3.2.3-59

Code:
struct  vertex {
        int id;
        int seq;
        int pos;
        int clique;
        int numOfVer;
        int numOfPrev;
        int numOfNext;
        int *prev;
        int *next;
        vertex *front;
        vertex *back;
        vertex *left;
        vertex *right;
};

static void make_vertex(vertex **ver, int index, int s, int ps) {
       
        *ver = NULL;
        if( *ver == NULL ) {
                *ver = (vertex *) malloc(sizeof(vertex));
                if( *ver == NULL ) {
                        printf("memory allocation error\n");
                        exit(1);
                }
        }
        (*ver)->id        = index;
        (*ver)->seq       = s;
        (*ver)->pos       = ps;
        (*ver)->clique    = 0;
        (*ver)->numOfPrev = 0;
        (*ver)->numOfVer  = 0;
        (*ver)->numOfNext = 0;
        (*ver)->prev      = NULL;
        (*ver)->next      = NULL;
        (*ver)->front     = NULL;
        (*ver)->back      = NULL;
        (*ver)->left      = NULL;
        (*ver)->right     = NULL;
}

Regards
Allocate storage for ver before mallocing memory for *ver as ver maybe pointing to some arbitrary location producing the malloc corruption.
# 7  
Old 10-30-2009
where and how should this be done? Would you please give an example?

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

FORTRAN error *** glibc detected ***

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: I'm doing aproximation of derivative called five-point stencil. For every value of x, in interval , in step... (0 Replies)
Discussion started by: antonija
0 Replies

2. Programming

C++ glibc detected double free or corruption(!prev) using shared library

Currently I test a shared library vendor provided in linux , the following is the simple source : #include <iostream> using namespace std; extern int test1(); extern int test2(); int main() { cout << "hello world" << endl ; return 0 ; cout << "Test 1" << endl; ... (6 Replies)
Discussion started by: barfatchen
6 Replies

3. Programming

*** glibc detected *** ./a.out malloc() memory corruption

I am facing a problem of memory corruption. The loop runs for the first time but does not go through the second time. What could be the problem? for(int z=0;z<2;z++) { fp=fopen("poly.dat","r"); /*do something which reads this file into a 2D array*/ fclose(fp); ... (10 Replies)
Discussion started by: dare
10 Replies

4. Programming

*** glibc detected *** : malloc(): memory corruption (fast)

Hi Friends, while executing the below code, am getting *** glibc detected *** ./ok: malloc(): memory corruption (fast) error, please suggest how to solve this issue. #include <stdio.h> #include <string.h> #include <sqlca.h> #include <alloca.h> /* Define constants for VARCHAR... (2 Replies)
Discussion started by: mpjobsrch
2 Replies

5. Programming

glib detected: malloc() memory curruption

I am using libxml2 library for XMl parsing and libxml++ is C++ wrapper over that. So I am using API of libxml++. I am creating my class and composing instance xmlpp::Node *pNode in that. my class also have funciton prepareXPathQuery() which creates query string and have other fucntion... (2 Replies)
Discussion started by: sharadwagh
2 Replies

6. Programming

*** glibc detected *** ./a.out: malloc(): memory corruption (fast):

*** glibc detected *** ./a.out: malloc(): memory corruption (fast): Posted A minute ago M trying to make multiway tree and dont know what happend when this part of code get executed: 01void ins(NODE *ptr) 02{ 03 //working 04 if(ptr!=NULL) 05 { 06 SNODE *var=NULL; 07 var=(SNODE... (3 Replies)
Discussion started by: exgenome
3 Replies

7. Programming

./match_pattern.out: malloc(): memory corruption: 0x0000000013a11600 ***

Hi All, I have a simple code which does some computation by matching string patterns. In brief: 1. The code reads .dat and .txt files. 2. .dat files are huge text files and .txt files contain some important words. 3. I am just doing strstr to find the patterns. 4. The function returns the... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

8. Programming

solved: glibc detection corruption using a fork in popen

Hi, I am having a hell of a time getting this to work. So basically, I have opened a popen to run a program that is going to prompt an action to occur half way through, when it gets to this I need to create a separate process and do some stuff, then return to the original process. This works... (0 Replies)
Discussion started by: imrank27
0 Replies

9. Programming

Pointer to a struct (with pointers) *** glibc detected *** double free

I am using a structure defined as follows struct gene_square { double *x; double *y; };I have class, with a member function which is a pointer of this type: gene_square* m_Genes;I am allocating memory in the constructors like this: m_Genes = new gene_square; for (ii=0;... (1 Reply)
Discussion started by: jatoo
1 Replies

10. Programming

*** glibc detected *** double free or corruption: 0x40236ff4 ***

when i try to use the class i wrote, i either get this: *** glibc detected *** double free or corruption: 0x40236ff4 *** and the proccess exits with an error code of 0; or it segfaults. could someone look at my header file (with imp.) to give me some insight as to why its not working? ... (19 Replies)
Discussion started by: norsk hedensk
19 Replies
Login or Register to Ask a Question