diff --git a/inc/external/register/tilingdata_base.h b/inc/external/register/tilingdata_base.h index 8618184816139c193bc55f24587a816698d0b715..cff81b69d6e1ee2f0ffc02ca6de7b0173909ac7e 100644 --- a/inc/external/register/tilingdata_base.h +++ b/inc/external/register/tilingdata_base.h @@ -27,17 +27,18 @@ struct CharPtrCmp { class StructSizeInfoBase { public: - static StructSizeInfoBase &GetInstance() - { - static StructSizeInfoBase instance; - return instance; - } + static StructSizeInfoBase &GetInstance(); void SetStructSize(const char *structType, const size_t structSize) { if (structSizeInfo.find(structType) != structSizeInfo.end()) { return; } - structSizeInfo[structType] = structSize; + auto len = strlen(structType); + auto str = (char *)malloc(len + 1); + if (str != nullptr) { + strcpy(str, structType); + } + structSizeInfo[str] = structSize; } size_t GetStructSize(const char *structType) { @@ -45,7 +46,11 @@ public: } private: StructSizeInfoBase() { }; - ~StructSizeInfoBase() { }; + ~StructSizeInfoBase() { + for (auto &it:structSizeInfo) { + std::free((void *)it.first); + } + }; StructSizeInfoBase(const StructSizeInfoBase &); StructSizeInfoBase &operator=(const StructSizeInfoBase &); std::map structSizeInfo; diff --git a/register/ascendc/tilingdata_base.cc b/register/ascendc/tilingdata_base.cc index 0cdcbcf7c71d54e29a2723aa28db3c12f4eed2c0..2a2b75329e2752b4f0de44f1651ab28c53a5049f 100644 --- a/register/ascendc/tilingdata_base.cc +++ b/register/ascendc/tilingdata_base.cc @@ -147,6 +147,11 @@ CTilingDataClassFactory &CTilingDataClassFactory::GetInstance() return instance; } +StructSizeInfoBase &StructSizeInfoBase::GetInstance() { + static StructSizeInfoBase instance; + GELOGD("instance's address = %p", &instance); + return instance; +} void CTilingDataClassFactory::RegisterTilingData(const char *op_type, const TilingDataConstructor constructor) { instance_.emplace(op_type, constructor); diff --git a/tests/stub/gen_stubapi.py b/tests/stub/gen_stubapi.py index 62a14faae37449e3b98263cfe8966cd0573697ca..447b3e8b6a2aec84eba844fe6dc9994b286b6a4e 100755 --- a/tests/stub/gen_stubapi.py +++ b/tests/stub/gen_stubapi.py @@ -119,6 +119,8 @@ RETURN_STATEMENTS = { 'HiddenInputFuncRegistry&': ' static HiddenInputFuncRegistry instance;\n return instance;', 'CTilingDataClassFactory& CTilingDataClassFactory::GetInstance': ' static CTilingDataClassFactory instance;\n return instance;', + 'StructSizeInfoBase& StructSizeInfoBase::GetInstance': + ' static StructSizeInfoBase instance;\n return instance;', 'FrameworkRegistry& FrameworkRegistry::': ' static FrameworkRegistry instance;\n return instance;', 'ScreenPrinter& ScreenPrinter::': ' static ScreenPrinter instance;\n return instance;', 'ErrorTracking& ErrorTracking::': ' static ErrorTracking instance;\n return instance;',