0
現在、私はasn1cコンパイラを理解しようとしています。私は今すぐPDF https://lionet.info/asn1c/asn1c-usage.pdfを読んでいます。私は、メモリの同じブロックに埋め込まれstruct my_figure
の一部としてrect
を見ることasn1c:なぜこの構造体のこのメンバーを解放する必要がありますか?
/*
1. Rectangle_t is defined within my_figure
*/
struct my_figure {
Rectangle_t rect;
} *mf = ...;
/*
* Freeing the Rectangle_t* without freeing the mf->rect area.
*/
asn_DEF_Rectangle.free_struct(&asn_DEF_Rectangle, &mf->rect, 1 /* !free */);
:ターゲット構造の解放部2.1.7にこのような例があります。だから、なぜその関数でその構造体を解放する必要がありますか?それはメモリのチャンクを解放しないとき、どのような目的がこの機能を果たすのですか?
ようRectangle_tの定義はなります:私はあなたが自由の機能がどのように機能するかを正しく理解していなかったと思います
RectangleTest DEFINITIONS ::= BEGIN
Rectangle ::= SEQUENCE {
height INTEGER,
width INTEGER
}
END
生成されたヘッダ
/*
* Generated by asn1c-0.9.24 (http://lionet.info/asn1c)
* From ASN.1 module "RectangleTest"
* found in "../Rectangle.asn1"
*/
#ifndef _Rectangle_H_
#define _Rectangle_H_
#include <asn_application.h>
/* Including external dependencies */
#include <INTEGER.h>
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Rectangle */
typedef struct Rectangle {
INTEGER_t height;
INTEGER_t width;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} Rectangle_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_Rectangle;
#ifdef __cplusplus
}
#endif
#endif /* _Rectangle_H_ */
#include <asn_internal.h>