I build these frequently:
Otherwise, if I'm building something it usually looks a lot like this, but MUCH bigger:
#include <stdlib.h>
#include <stdio.h>
#define BUFFERSIZE 1024*1024
typedef struct {
unsigned int buffer1[BUFFERSIZE];
unsigned int buffer2[BUFFERSIZE];
char test[10];
} sample_buffer;
typedef struct {
unsigned int whichbuffer;
char test[10];
} buffer_info;
int main(int argc, char *argv[]) {
unsigned int i;
sample_buffer *mybuffer;
buffer_info *bufferinfo;
if (( mybuffer = (sample_buffer *) malloc( sizeof(sample_buffer) ) ) == NULL) {
printf("ERROR ALLOCATING mybuffer\n");
exit;
}
if (( bufferinfo = (buffer_info *) malloc( sizeof(buffer_info) ) ) == NULL) {
printf("ERROR ALLOCATING bufferinfo\n");
goto cleanup;
}
printf("finished malloc\n");
// fill allocated memory with integers and read back some values
for( i = 0; i < ( BUFFERSIZE); i = i + 1) {
mybuffer->buffer1
= i;
mybuffer->buffer2 = i + 100;
bufferinfo->whichbuffer = (unsigned int)(i/100);
// print some of the last values
if (i >= ( (BUFFERSIZE - 10 )) ) {
printf("mybuffer->buffer1[%d]=%d whichbuffer=%d\n", i,
mybuffer->buffer1, bufferinfo->whichbuffer);
printf("mybuffer->buffer2[%d]=%d\n", i, mybuffer->buffer2);
}
}
strcpy(bufferinfo->test, "Captain");
printf("(C) 2006 by %s\n", bufferinfo->test);
memcpy(mybuffer->test, bufferinfo->test, 10);
printf("(C) 2006 by %s\n", mybuffer->test);
free(bufferinfo);
cleanup:
free(mybuffer);
return 0;
Oh, wait, I did build these:
The sign...
The display...