Segmentation fault char array pointer

E

esanchezfo

Please tell me what is wrong, what is the cause of the segmentation?

#include <stdio.h>
#include <malloc.h>



void GetBuffer (unsigned char ** buffer)
{
* buffer = malloc (sizeof (unsigned char [3]));

* buffer [0] = 0x00; // Segmentation Fault
* buffer [1] = 0xA0;
* buffer [2] = 0xB0;

//printf ("Resultado de GetBuffer Hexa 0: %x, %x, %x\n", * buffer [0],
* buffer [1], * buffer [2]);
}

void ShowBuffer (unsigned char * buffer)
{
//printf ("Resultado de GetBuffer Hexa II: %x, %x, %x, %x, %x\n",
*buffer, buffer, buffer [0], buffer [1], buffer [2]);
}


int main ()
{
unsigned char * buffer = NULL;

GetBuffer (&buffer);

//printf ("Resultado de GetBuffer Hexa I: %x, %x, %x\n", buffer [0],
buffer [1], buffer [2]);
//printf ("Resultado de GetBuffer Hexa II: %x, %x, %x\n", buffer [0],
buffer [1], buffer [2]);
//printf ("Resultado de GetBuffer Hexa III: %x, %x, %x\n", buffer [0],
buffer [1], buffer [2]);
//printf ("Direccion de &buffer I: %x, %x\n", &buffer, buffer [0]);
//ShowBuffer (buffer);

return 0;
}


Thanks a lot.
 
F

Fred Kleinschmidt

esanchezfo said:
Please tell me what is wrong, what is the cause of the segmentation?

#include <stdio.h>
#include <malloc.h>



void GetBuffer (unsigned char ** buffer)
{
* buffer = malloc (sizeof (unsigned char [3]));

* buffer [0] = 0x00; // Segmentation Fault

Precedence of operators has bitten you
Use (*buffer)[0]
* buffer [1] = 0xA0;
* buffer [2] = 0xB0;

//printf ("Resultado de GetBuffer Hexa 0: %x, %x, %x\n", * buffer [0],
* buffer [1], * buffer [2]);
}

void ShowBuffer (unsigned char * buffer)
{
//printf ("Resultado de GetBuffer Hexa II: %x, %x, %x, %x, %x\n",
*buffer, buffer, buffer [0], buffer [1], buffer [2]);
}


int main ()
{
unsigned char * buffer = NULL;

GetBuffer (&buffer);

//printf ("Resultado de GetBuffer Hexa I: %x, %x, %x\n", buffer [0],
buffer [1], buffer [2]);
//printf ("Resultado de GetBuffer Hexa II: %x, %x, %x\n", buffer [0],
buffer [1], buffer [2]);
//printf ("Resultado de GetBuffer Hexa III: %x, %x, %x\n", buffer [0],
buffer [1], buffer [2]);
//printf ("Direccion de &buffer I: %x, %x\n", &buffer, buffer [0]);
//ShowBuffer (buffer);

return 0;
}


Thanks a lot.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top