私は小さなLuaバインディング ライブラリを書いています。現在、キー/値を保持するための非常に単純な構造体を提供しています。ここで、 myvalue
はvoid pointer
です。
struct kvPair {
enum EVENT_TYPE type;
char *key;
void *value;
};
typedef struct kvPair KeyValuePair;
KeyValuePair kvPairWithNumber(char *key, float number)
{
KeyValuePair kv;
float *aux = malloc(sizeof(float)); // <-- help
*aux = number;
kv.key = key;
kv.type = NUMBER;
kv.value = aux;
return kv;
}
この種のユースケースについて疑問に思っていました... malloc を処理する良い方法は何でしょうか? 私は本当にやりたくない:
if (aux == NULL) {
exit(0);
}
おそらく、メモリのブロックを事前に割り当てて、malloc 呼び出しを独自のより単純な実装 (単純なスタックを使用したカスタム メモリ アロケータ?) でオーバーライドすることができます。
フィードバックと例を受け取りたいのですが、シンプルさが望ましいです。