Ich habe den folgenden Code.casting void * zu struct * in C++
#include <iostream>
using namespace std;
typedef unsigned char byte;
typedef struct {
unsigned int a;
unsigned int b;
} Struct_A;
void* malloc_(size_t s, byte* heap, int *next) {
int old = *next;
*next = *next + s;
return heap + old;
}
void f(Struct_A *sa, byte* heap, int *next) {
sa = (Struct_A*) malloc_(8, heap, next);
sa->a = 10;
sa->b = 20;
}
int main() {
byte *heap = new byte[1000];
int next;
next = 0;
Struct_A *sa;
sa = (Struct_A*) malloc_(8, heap, &next);
sa->a = 100;
sa->b = 200;
cout << sa->a << endl;
Struct_A *sb;
f(sb, heap, &next);
cout<< sb->a <<endl;
return 0;
}
der code funktioniert gut für sa aber nicht für sb !!! Funktion f() tut genau das gleiche, was die drei Codezeilen nach "Struct_A * sa;" tut. Irgendeine Idee, was mit der Funktion f() falsch ist?
Dies ist nicht C, aber C++! In C sollte man 'void *' nicht in einen anderen Zeigertyp umwandeln – Olaf
@Olaf Andersherum nicht C++ aber C –
@ DieterLücking: 'cout << sb-> ein << endl' oder' neues Byte [1000]; 'sind C? – Olaf