-
Notifications
You must be signed in to change notification settings - Fork 232
Open
Labels
Description
Please ignore my ignorance but while I'm trying to learn more about ffi I studied the structs sample.
I just don't understand how freeing myHomeUtf8 does not leave a dangling pointer in the the native Place struct.
https://github.com/dart-lang/samples/blob/master/ffi/structs/structs_library/structs.c#L58
struct Place create_place(char *name, double latitude, double longitude)
{
struct Place place;
place.name = name;
// ...https://github.com/dart-lang/samples/blob/master/ffi/structs/structs.dart#L94
final myHomeUtf8 = 'My Home'.toNativeUtf8();
final createPlace =
dylib.lookupFunction<CreatePlaceNative, CreatePlace>('create_place');
final place = createPlace(myHomeUtf8, 42.0, 24.0);
calloc.free(myHomeUtf8);
final name = place.name.toDartString();I understand that someone needs to free that memory and that in a sample memory management might not be the biggest concern. But accessing the name after freeing the memory seems especially odd to me.
Most likely I'm just missing something here.
Reactions are currently unavailable