You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用asn1_create_element返回错误码137,但asn1_print_structure可正常运行

libtasn1中asn1_create_element返回错误码137的问题

我在使用libtasn1.h中的asn1_create_element()函数时,它返回了错误码137,但用相同的定义和源文件调用asn1_print_structure()却能正常运行。

代码示例:

asn1_print_structure(stdout, definitions, "IEC61850.GOOSEpdu", ASN1_PRINT_ALL); // 运行正常
asn1_node * goose_pdu = NULL;
result = asn1_create_element(definitions, "IEC61850.GOOSEpdu", goose_pdu); // 返回错误码137

看起来像是内存不足,但我不清楚具体原因。

对应的ASN.1代码如下:

IEC61850 {}
DEFINITIONS IMPLICIT TAGS ::= BEGIN

GOOSEpdu ::= CHOICE {
    goosePdu    [APPLICATION 1] IMPLICIT IECGoosePdu
}

IECGoosePdu ::= SEQUENCE {
    gocbRef             [0] IMPLICIT VisibleString,
    timeAllowedtoLive   [1] IMPLICIT INTEGER,
    datSet              [2] IMPLICIT VisibleString,
    goID                [3] IMPLICIT VisibleString OPTIONAL,
    t                   [4] IMPLICIT UtcTime,
    stNum               [5] IMPLICIT INTEGER,
    sqNum               [6] IMPLICIT INTEGER,
    test                [7] IMPLICIT BOOLEAN DEFAULT FALSE,
    confRev             [8] IMPLICIT INTEGER,
    ndsCom              [9] IMPLICIT BOOLEAN DEFAULT FALSE,
    numDatSetEntries    [10] IMPLICIT INTEGER,
    allData             [11] IMPLICIT SEQUENCE OF Data --,
--  security            [12] ANY OPTIONAL
                             -- reserved for digital signature
}

UtcTime ::= OCTET STRING -- format and size defined in 8.1.3.6.

TimeOfDay ::= OCTET STRING -- (SIZE (4 | 6))
FloatingPoint ::= OCTET STRING


Data ::= CHOICE
    {
    -- context tag 0 is reserved for AccessResult
    array               [1] IMPLICIT SEQUENCE OF Data,
    structure           [2] IMPLICIT SEQUENCE OF Data,
    boolean             [3] IMPLICIT BOOLEAN,   
    bit-string          [4] IMPLICIT BIT STRING,
    integer             [5] IMPLICIT INTEGER,
    unsigned            [6] IMPLICIT INTEGER,
    floating-point      [7] IMPLICIT FloatingPoint,
    -- real             [8] IMPLICIT REAL,
    octet-string        [9] IMPLICIT OCTET STRING,
    visible-string      [10] IMPLICIT VisibleString,
    binary-time         [12] IMPLICIT TimeOfDay,
    bcd                 [13] IMPLICIT INTEGER,
    booleanArray        [14] IMPLICIT BIT STRING,
    objId               [15] IMPLICIT OBJECT IDENTIFIER,
    mMSString           [16] IMPLICIT MMSString,
    utc-time            [17] IMPLICIT UtcTime               -- added by IEC61850 8.1 G3 
    }

MMSString ::= UTF8String

END

内容的提问来源于stack exchange,提问作者Carlos Moraes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:07:09