2016-07-11 13 views
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> 

答えて

関連する問題