Given a struct, e.g.
typedef struct
{
int value;
} TestStruct;
Why does the following code (in the context of an Objective-C class running on the IPhone) throw a "non-aligned pointer being freed" exception?
TestStruct ts = {33};
free(&ts);
N.B. My uber goal is to use a C library with many vector-math functions, hence the need to find out some viable way to mix C and Objective-C
It looks to me like you're trying to free a stack or static variable. You need to have malloc()'d something for it to be able to be free()'d.
Try this instead:
TestStruct *ts = malloc(sizeof(TestStruct));
ts->value = 33;
free(ts);
For those more familiar with object-oriented languages, you might find it helpful to create a constructor:
TestStruct *newTestStruct(int value)
{
TestStruct *ret = malloc(sizeof(TestStruct));
ret->value = value;
return ret;
}
This enables you to allocate a struct and set the values in one step. Just remember that this value should be freed once it's no longer useful:
TestStruct *x = newTestStruct(3);
free(x);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With