我正在建立一个ANE。在我对本机代码的一个调用中,有一个对象被创建,我希望能够将其保留在内存中以便在将来的调用中引用。
我想我可以通过创建一个指向该对象的指针,然后将该指针传递给FRESetContextNativeData()来实现这一点,如下例所示:
FREObject storeData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data = "testing...";
FRESetContextNativeData( ctx, &data );
return getFREString(data);
}
FREObject retrieveData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data;
FREGetContextNativeData(ctx, (void**)&data);
return getFREString(data);
}
但这似乎不起作用。在retrieveData()的末尾,data
指向一堆随机性。是什么赋予了?
答案 0 :(得分:0)
所以我有点白痴。我犯的错误是在调用FRESetContextNativeData()之前将&
放在data
之前。那个只需要一个指针,而不是指向像FREGetContextNativeData()这样的指针的指针。
以下代码生成我期望的结果:
FREObject storeData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data = "testing..."
FRESetContextNativeData( ctx, (void*)data );
return getFREString(data);
}
FREObject retrieveData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char *data;
FREGetContextNativeData(ctx, (void**)&data);
return getFREString(data);
}