Skip to content

valgrind --leak-check=full --show-leak-kinds=all --show-possibly-lost=no --show-reachable=no --log-file="valgrind/valgrind-non-transfer.txt" ./TenonExec

shell
~/project_ebox/bugfix/build/output/bin on  release_0.14.4_250621! 14:38:43
$ valgrind --leak-check=full  --show-possibly-lost=no --show-reachable=no ./tlc main.t  -o main.tbin                     
==2304392== Memcheck, a memory error detector
==2304392== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==2304392== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==2304392== Command: ./tlc -s main.t -o main.tbin
==2304392== 
==2304392== 
==2304392== HEAP SUMMARY:
==2304392==     in use at exit: 5,204 bytes in 177 blocks
==2304392==   total heap usage: 3,942 allocs, 3,765 frees, 4,738,901 bytes allocated
==2304392== 
==2304392== 8 bytes in 1 blocks are definitely lost in loss record 1 of 15
==2304392==    at 0x483E340: memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x4940BE5: operator new(unsigned long, std::align_val_t) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==2304392==    by 0x4979D8: std::pmr::memory_resource::allocate(unsigned long, unsigned long) (memory_resource:100)
==2304392==    by 0x4B86E7: std::pmr::polymorphic_allocator<tenon::Type*>::allocate(unsigned long) (memory_resource:172)
==2304392==    by 0x4B7EC6: std::allocator_traits<std::pmr::polymorphic_allocator<tenon::Type*> >::allocate(std::pmr::polymorphic_allocator<tenon::Type*>&, unsigned long) (alloc_traits.h:305)
==2304392==    by 0x4B7447: std::_Vector_base<tenon::Type*, std::pmr::polymorphic_allocator<tenon::Type*> >::_M_allocate(unsigned long) (stl_vector.h:343)
==2304392==    by 0x4B6521: void std::vector<tenon::Type*, std::pmr::polymorphic_allocator<tenon::Type*> >::_M_realloc_insert<tenon::Type*&>(__gnu_cxx::__normal_iterator<tenon::Type**, std::vector<tenon::Type*, std::pmr::polymorphic_allocator<tenon::Type*> > >, tenon::Type*&) (vector.tcc:440)
==2304392==    by 0x4B373D: tenon::Type*& std::vector<tenon::Type*, std::pmr::polymorphic_allocator<tenon::Type*> >::emplace_back<tenon::Type*&>(tenon::Type*&) (vector.tcc:121)
==2304392==    by 0x4B20FA: tenon::TypeList::append(tenon::Type*) (TypePrivate.h:24)
==2304392==    by 0x5436F0: tenon::FuncDecl::createVarDecl(std::basic_string_view<char, std::char_traits<char> >, tenon::Type*, tenon::Location const&, tenon::VarKind, tenon::Expr*, tenon::Expr*, bool) (Decl.cpp:47)
==2304392==    by 0x54685D: tenon::ModuleDecl::createVarDecl(std::basic_string_view<char, std::char_traits<char> >, tenon::Type*, tenon::Expr*, tenon::Expr*, tenon::Location const&) (Decl.cpp:492)
==2304392==    by 0x4A90B0: tenon::TenonParser::parseVarDecl(tenon::Location) (TenonParser.cpp:600)
==2304392== 
==2304392== 40 bytes in 1 blocks are definitely lost in loss record 2 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x53B919: std::_MakeUniq<tenon::ValuePrivate>::__single_object std::make_unique<tenon::ValuePrivate>() (unique_ptr.h:857)
==2304392==    by 0x53A4D7: tenon::Value::Value() (Value.cpp:9)
==2304392==    by 0x5527A6: tenon::LiteralExpr::LiteralExpr(tenon::ParseContext*, tenon::Location const&) (Expr.cpp:150)
==2304392==    by 0x54A8FC: tenon::LiteralExpr* tenon::ArenaMemResource::alloc<tenon::LiteralExpr, tenon::ParseContext*&, tenon::Location const&>(tenon::ParseContext*&, tenon::Location const&) (ArenaMemResource.h:32)
==2304392==    by 0x5480B1: tenon::ModuleDecl::createVoidExpr(tenon::Location const&) (Decl.cpp:693)
==2304392==    by 0x4A8C7C: tenon::TenonParser::parseVarDecl(tenon::Location) (TenonParser.cpp:564)
==2304392==    by 0x4A8716: tenon::TenonParser::parseVarDecl(tenon::Location) (TenonParser.cpp:492)
==2304392==    by 0x4A6E80: tenon::TenonParser::parseModuleItem() (TenonParser.cpp:191)
==2304392==    by 0x4A6AA4: tenon::TenonParser::parse() (TenonParser.cpp:101)
==2304392==    by 0x49FB64: tenon::CompilerPrivate::execute() (CompilerPrivate.cpp:94)
==2304392==    by 0x497E09: tenon::Compiler::execute() (Compiler.cpp:44)
==2304392== 
==2304392== 40 bytes in 1 blocks are definitely lost in loss record 3 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x53B919: std::_MakeUniq<tenon::ValuePrivate>::__single_object std::make_unique<tenon::ValuePrivate>() (unique_ptr.h:857)
==2304392==    by 0x53A4D7: tenon::Value::Value() (Value.cpp:9)
==2304392==    by 0x4B286D: tenon::OpExpr::OpExpr(tenon::ExprKind, tenon::ParseContext*, tenon::OpKind, tenon::Expr*, tenon::Expr*, tenon::Location const&, tenon::LabelNode*, tenon::LabelNode*) (Expr.h:216)
==2304392==    by 0x4B2A1C: tenon::UnaryOpExpr::UnaryOpExpr(tenon::ParseContext*, tenon::OpKind, tenon::Expr*, tenon::Location const&, tenon::LabelNode*, tenon::LabelNode*) (Expr.h:237)
==2304392==    by 0x4B310A: tenon::PostIncOpExpr::PostIncOpExpr(tenon::ParseContext*, tenon::Expr*, tenon::Location const&) (Expr.h:352)
==2304392==    by 0x4B55E2: tenon::PostIncOpExpr* tenon::ArenaMemResource::alloc<tenon::PostIncOpExpr, tenon::ParseContext*&, tenon::Expr*&, tenon::Location&>(tenon::ParseContext*&, tenon::Expr*&, tenon::Location&) (ArenaMemResource.h:32)
==2304392==    by 0x4AD5DD: tenon::TenonParser::parsePostfixExpr() (TenonParser.cpp:1501)
==2304392==    by 0x4ACD54: tenon::TenonParser::parseUnaryExpr() (TenonParser.cpp:1414)
==2304392==    by 0x4AC5DD: tenon::TenonParser::parseMulExpr() (TenonParser.cpp:1323)
==2304392==    by 0x4AC33B: tenon::TenonParser::parseAddExpr() (TenonParser.cpp:1289)
==2304392==    by 0x4ABF05: tenon::TenonParser::parseRelationalExpr() (TenonParser.cpp:1245)
==2304392== 
==2304392== 40 bytes in 1 blocks are definitely lost in loss record 4 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x53B919: std::_MakeUniq<tenon::ValuePrivate>::__single_object std::make_unique<tenon::ValuePrivate>() (unique_ptr.h:857)
==2304392==    by 0x53A4D7: tenon::Value::Value() (Value.cpp:9)
==2304392==    by 0x4B287D: tenon::OpExpr::OpExpr(tenon::ExprKind, tenon::ParseContext*, tenon::OpKind, tenon::Expr*, tenon::Expr*, tenon::Location const&, tenon::LabelNode*, tenon::LabelNode*) (Expr.h:216)
==2304392==    by 0x4B2A1C: tenon::UnaryOpExpr::UnaryOpExpr(tenon::ParseContext*, tenon::OpKind, tenon::Expr*, tenon::Location const&, tenon::LabelNode*, tenon::LabelNode*) (Expr.h:237)
==2304392==    by 0x4B310A: tenon::PostIncOpExpr::PostIncOpExpr(tenon::ParseContext*, tenon::Expr*, tenon::Location const&) (Expr.h:352)
==2304392==    by 0x4B55E2: tenon::PostIncOpExpr* tenon::ArenaMemResource::alloc<tenon::PostIncOpExpr, tenon::ParseContext*&, tenon::Expr*&, tenon::Location&>(tenon::ParseContext*&, tenon::Expr*&, tenon::Location&) (ArenaMemResource.h:32)
==2304392==    by 0x4AD5DD: tenon::TenonParser::parsePostfixExpr() (TenonParser.cpp:1501)
==2304392==    by 0x4ACD54: tenon::TenonParser::parseUnaryExpr() (TenonParser.cpp:1414)
==2304392==    by 0x4AC5DD: tenon::TenonParser::parseMulExpr() (TenonParser.cpp:1323)
==2304392==    by 0x4AC33B: tenon::TenonParser::parseAddExpr() (TenonParser.cpp:1289)
==2304392==    by 0x4ABF05: tenon::TenonParser::parseRelationalExpr() (TenonParser.cpp:1245)
==2304392== 
==2304392== 48 bytes in 6 blocks are definitely lost in loss record 5 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x55E15B: __gnu_cxx::new_allocator<tenon::Expr*>::allocate(unsigned long, void const*) (new_allocator.h:114)
==2304392==    by 0x55DD67: std::allocator_traits<std::allocator<tenon::Expr*> >::allocate(std::allocator<tenon::Expr*>&, unsigned long) (alloc_traits.h:443)
==2304392==    by 0x55D879: std::_Vector_base<tenon::Expr*, std::allocator<tenon::Expr*> >::_M_allocate(unsigned long) (stl_vector.h:343)
==2304392==    by 0x55CC56: void std::vector<tenon::Expr*, std::allocator<tenon::Expr*> >::_M_realloc_insert<tenon::Expr*&>(__gnu_cxx::__normal_iterator<tenon::Expr**, std::vector<tenon::Expr*, std::allocator<tenon::Expr*> > >, tenon::Expr*&) (vector.tcc:440)
==2304392==    by 0x55BC81: tenon::Expr*& std::vector<tenon::Expr*, std::allocator<tenon::Expr*> >::emplace_back<tenon::Expr*&>(tenon::Expr*&) (vector.tcc:121)
==2304392==    by 0x554BFC: tenon::CallExpr::CallExpr(tenon::ParseContext*, tenon::Expr*, char const*, tenon::Expr*, tenon::Expr*, tenon::Location const&) (Expr.cpp:517)
==2304392==    by 0x54A7A2: tenon::CallExpr* tenon::ArenaMemResource::alloc<tenon::CallExpr, tenon::ParseContext*&, tenon::Expr*&, char*&, tenon::Expr*&, tenon::Expr*&, tenon::Location const&>(tenon::ParseContext*&, tenon::Expr*&, char*&, tenon::Expr*&, tenon::Expr*&, tenon::Location const&) (ArenaMemResource.h:32)
==2304392==    by 0x547FD3: tenon::ModuleDecl::createCallExpr(std::basic_string_view<char, std::char_traits<char> >, tenon::Expr*, tenon::Expr*, tenon::Location const&) (Decl.cpp:679)
==2304392==    by 0x4AEA4E: tenon::TenonParser::parsePrimaryExpr() (TenonParser.cpp:1750)
==2304392==    by 0x4ACE6E: tenon::TenonParser::parsePostfixExpr() (TenonParser.cpp:1424)
==2304392==    by 0x4ACD54: tenon::TenonParser::parseUnaryExpr() (TenonParser.cpp:1414)
==2304392== 
==2304392== 56 bytes in 1 blocks are definitely lost in loss record 6 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x4D44F8: tenon::DiagnosticEngine::DiagnosticEngine() (DiagnosticEngine.cpp:9)
==2304392==    by 0x49C233: std::_MakeUniq<tenon::DiagnosticEngine>::__single_object std::make_unique<tenon::DiagnosticEngine>() (unique_ptr.h:857)
==2304392==    by 0x49B60F: tenon::Diagnostic::GetEngine() (Diagnostic.cpp:37)
==2304392==    by 0x49B6BE: tenon::Diagnostic::HasErrors() (Diagnostic.cpp:46)
==2304392==    by 0x4A024D: tenon::CompilerPrivate::execute() (CompilerPrivate.cpp:217)
==2304392==    by 0x497E09: tenon::Compiler::execute() (Compiler.cpp:44)
==2304392==    by 0x474E1E: tlc::TlcCommand::execute() (TlcCommand.cpp:77)
==2304392==    by 0x446750: main (main.cpp:15)
==2304392== 
==2304392== 64 bytes in 6 blocks are definitely lost in loss record 7 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x55E15B: __gnu_cxx::new_allocator<tenon::Expr*>::allocate(unsigned long, void const*) (new_allocator.h:114)
==2304392==    by 0x55DD67: std::allocator_traits<std::allocator<tenon::Expr*> >::allocate(std::allocator<tenon::Expr*>&, unsigned long) (alloc_traits.h:443)
==2304392==    by 0x55D879: std::_Vector_base<tenon::Expr*, std::allocator<tenon::Expr*> >::_M_allocate(unsigned long) (stl_vector.h:343)
==2304392==    by 0x55CC56: void std::vector<tenon::Expr*, std::allocator<tenon::Expr*> >::_M_realloc_insert<tenon::Expr*&>(__gnu_cxx::__normal_iterator<tenon::Expr**, std::vector<tenon::Expr*, std::allocator<tenon::Expr*> > >, tenon::Expr*&) (vector.tcc:440)
==2304392==    by 0x55BC81: tenon::Expr*& std::vector<tenon::Expr*, std::allocator<tenon::Expr*> >::emplace_back<tenon::Expr*&>(tenon::Expr*&) (vector.tcc:121)
==2304392==    by 0x554C15: tenon::CallExpr::CallExpr(tenon::ParseContext*, tenon::Expr*, char const*, tenon::Expr*, tenon::Expr*, tenon::Location const&) (Expr.cpp:518)
==2304392==    by 0x54A7A2: tenon::CallExpr* tenon::ArenaMemResource::alloc<tenon::CallExpr, tenon::ParseContext*&, tenon::Expr*&, char*&, tenon::Expr*&, tenon::Expr*&, tenon::Location const&>(tenon::ParseContext*&, tenon::Expr*&, char*&, tenon::Expr*&, tenon::Expr*&, tenon::Location const&) (ArenaMemResource.h:32)
==2304392==    by 0x547FD3: tenon::ModuleDecl::createCallExpr(std::basic_string_view<char, std::char_traits<char> >, tenon::Expr*, tenon::Expr*, tenon::Location const&) (Decl.cpp:679)
==2304392==    by 0x4AEA4E: tenon::TenonParser::parsePrimaryExpr() (TenonParser.cpp:1750)
==2304392==    by 0x4ACE6E: tenon::TenonParser::parsePostfixExpr() (TenonParser.cpp:1424)
==2304392==    by 0x4ACD54: tenon::TenonParser::parseUnaryExpr() (TenonParser.cpp:1414)
==2304392== 
==2304392== 120 bytes in 3 blocks are definitely lost in loss record 8 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x53BA7F: std::_MakeUniq<tenon::ValuePrivate>::__single_object std::make_unique<tenon::ValuePrivate, bool&>(bool&) (unique_ptr.h:857)
==2304392==    by 0x53AA3B: tenon::Value::Value(bool) (Value.cpp:64)
==2304392==    by 0x552555: tenon::LiteralExpr::LiteralExpr(tenon::ParseContext*, bool, tenon::Location const&) (Expr.cpp:134)
==2304392==    by 0x4B590A: tenon::LiteralExpr* tenon::ArenaMemResource::alloc<tenon::LiteralExpr, tenon::ParseContext*&, bool&, tenon::Location&>(tenon::ParseContext*&, bool&, tenon::Location&) (ArenaMemResource.h:32)
==2304392==    by 0x4ADD96: tenon::TenonParser::parsePrimaryExpr() (TenonParser.cpp:1540)
==2304392==    by 0x4ACE6E: tenon::TenonParser::parsePostfixExpr() (TenonParser.cpp:1424)
==2304392==    by 0x4ACD54: tenon::TenonParser::parseUnaryExpr() (TenonParser.cpp:1414)
==2304392==    by 0x4AC5DD: tenon::TenonParser::parseMulExpr() (TenonParser.cpp:1323)
==2304392==    by 0x4AC33B: tenon::TenonParser::parseAddExpr() (TenonParser.cpp:1289)
==2304392==    by 0x4ABF05: tenon::TenonParser::parseRelationalExpr() (TenonParser.cpp:1245)
==2304392==    by 0x4ABCB9: tenon::TenonParser::parseEqualityExpr() (TenonParser.cpp:1215)
==2304392== 
==2304392== 160 bytes in 4 blocks are definitely lost in loss record 9 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x53BAF8: std::_MakeUniq<tenon::ValuePrivate>::__single_object std::make_unique<tenon::ValuePrivate, char*&>(char*&) (unique_ptr.h:857)
==2304392==    by 0x53AAEE: tenon::Value::Value(char*) (Value.cpp:69)
==2304392==    by 0x55267F: tenon::LiteralExpr::LiteralExpr(tenon::ParseContext*, char const*, tenon::Location const&) (Expr.cpp:142)
==2304392==    by 0x4B5842: tenon::LiteralExpr* tenon::ArenaMemResource::alloc<tenon::LiteralExpr, tenon::ParseContext*&, char*, tenon::Location&>(tenon::ParseContext*&, char*&&, tenon::Location&) (ArenaMemResource.h:32)
==2304392==    by 0x4ADD0D: tenon::TenonParser::parsePrimaryExpr() (TenonParser.cpp:1535)
==2304392==    by 0x4ACE6E: tenon::TenonParser::parsePostfixExpr() (TenonParser.cpp:1424)
==2304392==    by 0x4ACD54: tenon::TenonParser::parseUnaryExpr() (TenonParser.cpp:1414)
==2304392==    by 0x4AC5DD: tenon::TenonParser::parseMulExpr() (TenonParser.cpp:1323)
==2304392==    by 0x4AC33B: tenon::TenonParser::parseAddExpr() (TenonParser.cpp:1289)
==2304392==    by 0x4ABF05: tenon::TenonParser::parseRelationalExpr() (TenonParser.cpp:1245)
==2304392==    by 0x4ABCB9: tenon::TenonParser::parseEqualityExpr() (TenonParser.cpp:1215)
==2304392== 
==2304392== 336 bytes in 2 blocks are definitely lost in loss record 11 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x53FECA: std::_MakeUniq<tenon::ProtoType>::__single_object std::make_unique<tenon::ProtoType, std::basic_string_view<char, std::char_traits<char> >&, tenon::Module*&, tenon::Type*&, tenon::TypeList*&, tenon::Scope&, tenon::Location const&>(std::basic_string_view<char, std::char_traits<char> >&, tenon::Module*&, tenon::Type*&, tenon::TypeList*&, tenon::Scope&, tenon::Location const&) (unique_ptr.h:857)
==2304392==    by 0x53C8A4: tenon::Type::Type(std::basic_string_view<char, std::char_traits<char> >, tenon::Module*, tenon::Type*, tenon::TypeList*, tenon::Scope, tenon::Location const&) (Type.cpp:53)
==2304392==    by 0x549886: tenon::Type* tenon::ArenaMemResource::alloc<tenon::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tenon::Module*&, tenon::Type*&, tenon::TypeList*, tenon::Scope&, tenon::Location const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, tenon::Module*&, tenon::Type*&, tenon::TypeList*&&, tenon::Scope&, tenon::Location const&) (ArenaMemResource.h:32)
==2304392==    by 0x5461CA: tenon::ModuleDecl::createFuncDecl(std::basic_string_view<char, std::char_traits<char> >, tenon::Type*, tenon::Location const&) (Decl.cpp:442)
==2304392==    by 0x4A8671: tenon::TenonParser::parseVarDecl(tenon::Location) (TenonParser.cpp:485)
==2304392==    by 0x4A6E80: tenon::TenonParser::parseModuleItem() (TenonParser.cpp:191)
==2304392==    by 0x4A6AA4: tenon::TenonParser::parse() (TenonParser.cpp:101)
==2304392==    by 0x49FB64: tenon::CompilerPrivate::execute() (CompilerPrivate.cpp:94)
==2304392==    by 0x497E09: tenon::Compiler::execute() (Compiler.cpp:44)
==2304392==    by 0x474E1E: tlc::TlcCommand::execute() (TlcCommand.cpp:77)
==2304392==    by 0x446750: main (main.cpp:15)
==2304392== 
==2304392== 396 (216 direct, 180 indirect) bytes in 1 blocks are definitely lost in loss record 12 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x567868: __gnu_cxx::new_allocator<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > >::allocate(unsigned long, void const*) (new_allocator.h:114)
==2304392==    by 0x567151: std::allocator_traits<std::allocator<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > > >::allocate(std::allocator<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > >&, unsigned long) (alloc_traits.h:443)
==2304392==    by 0x566CF5: std::_Vector_base<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> >, std::allocator<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > > >::_M_allocate(unsigned long) (stl_vector.h:343)
==2304392==    by 0x56638C: std::vector<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> >, std::allocator<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > > >::_M_fill_insert(__gnu_cxx::__normal_iterator<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> >*, std::vector<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> >, std::allocator<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > > > >, unsigned long, std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > const&) (vector.tcc:561)
==2304392==    by 0x565CC4: std::vector<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> >, std::allocator<std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > > >::resize(unsigned long, std::vector<tenon::FSANum::FSAState, std::allocator<tenon::FSANum::FSAState> > const&) (stl_vector.h:957)
==2304392==    by 0x565673: tenon::FSANum::FSANum(tenon::ArenaMemResource*) (FSANum.cpp:9)
==2304392==    by 0x565192: tenon::FSANum* tenon::ArenaMemResource::alloc<tenon::FSANum, tenon::ArenaMemResource*&>(tenon::ArenaMemResource*&) (ArenaMemResource.h:32)
==2304392==    by 0x56214D: tenon::TenonScanner::TenonScanner(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::istream*, tenon::ArenaMemResource*, tenon::TenonParser*) (TenonScanner.cpp:22)
==2304392==    by 0x4B395E: std::_MakeUniq<tenon::TenonScanner>::__single_object std::make_unique<tenon::TenonScanner, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::istream*, tenon::ArenaMemResource*&, tenon::TenonParser*>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::istream*&&, tenon::ArenaMemResource*&, tenon::TenonParser*&&) (unique_ptr.h:857)
==2304392==    by 0x4A6843: tenon::TenonParser::TenonParser(tenon::Task*, tenon::CodeInput*, tenon::ArenaMemResource*) (TenonParser.cpp:66)
==2304392==    by 0x49FB55: tenon::CompilerPrivate::execute() (CompilerPrivate.cpp:93)
==2304392== 
==2304392== 672 bytes in 4 blocks are definitely lost in loss record 13 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x53FECA: std::_MakeUniq<tenon::ProtoType>::__single_object std::make_unique<tenon::ProtoType, std::basic_string_view<char, std::char_traits<char> >&, tenon::Module*&, tenon::Type*&, tenon::TypeList*&, tenon::Scope&, tenon::Location const&>(std::basic_string_view<char, std::char_traits<char> >&, tenon::Module*&, tenon::Type*&, tenon::TypeList*&, tenon::Scope&, tenon::Location const&) (unique_ptr.h:857)
==2304392==    by 0x53C8A4: tenon::Type::Type(std::basic_string_view<char, std::char_traits<char> >, tenon::Module*, tenon::Type*, tenon::TypeList*, tenon::Scope, tenon::Location const&) (Type.cpp:53)
==2304392==    by 0x5401BD: tenon::Type* tenon::ArenaMemResource::alloc<tenon::Type, std::basic_string_view<char, std::char_traits<char> >&, tenon::Module*&, tenon::Type*&, tenon::TypeList*&, tenon::Scope&, tenon::Location const&>(std::basic_string_view<char, std::char_traits<char> >&, tenon::Module*&, tenon::Type*&, tenon::TypeList*&, tenon::Scope&, tenon::Location const&) (ArenaMemResource.h:32)
==2304392==    by 0x53DB7D: tenon::Type::CreateProtoType(tenon::Module*, std::basic_string_view<char, std::char_traits<char> >, tenon::Type*, tenon::TypeList*, tenon::Scope, tenon::Location const&) (Type.cpp:334)
==2304392==    by 0x579C19: tenon::FunctionPrivate::CreateExtern(tenon::Module*, std::basic_string_view<char, std::char_traits<char> >, tenon::Location const&) (FunctionPrivate.cpp:317)
==2304392==    by 0x538C42: tenon::Function::CreateExtern(tenon::Module*, std::basic_string_view<char, std::char_traits<char> >, tenon::Location const&) (Function.cpp:170)
==2304392==    by 0x55C045: tenon::Function* tenon::ModulePrivate::createExtern<tenon::Function>(std::basic_string_view<char, std::char_traits<char> >, tenon::Location const&) (ModulePrivate.h:101)
==2304392==    by 0x570228: tenon::BinaryFileLoader::loadFunctions(tenon::ModulePrivate*) (BinaryFileLoader.cpp:398)
==2304392==    by 0x56EB48: tenon::BinaryFileLoader::load(tenon::Task*, char const*, unsigned long) (BinaryFileLoader.cpp:160)
==2304392==    by 0x56DFE0: tenon::BinaryFileLoader::loadAllModules(tenon::Task*, std::filesystem::__cxx11::path const&) (BinaryFileLoader.cpp:57)
==2304392==    by 0x4D66D1: tenon::TaskPrivate::importLib(std::basic_string_view<char, std::char_traits<char> >) (TaskPrivate.cpp:67)
==2304392== 
==2304392== 680 bytes in 17 blocks are definitely lost in loss record 14 of 15
==2304392==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x53B9FD: std::_MakeUniq<tenon::ValuePrivate>::__single_object std::make_unique<tenon::ValuePrivate, double&>(double&) (unique_ptr.h:857)
==2304392==    by 0x53A987: tenon::Value::Value(double) (Value.cpp:59)
==2304392==    by 0x5525EC: tenon::LiteralExpr::LiteralExpr(tenon::ParseContext*, double, tenon::Location const&) (Expr.cpp:138)
==2304392==    by 0x4B576C: tenon::LiteralExpr* tenon::ArenaMemResource::alloc<tenon::LiteralExpr, tenon::ParseContext*&, double&, tenon::Location&>(tenon::ParseContext*&, double&, tenon::Location&) (ArenaMemResource.h:32)
==2304392==    by 0x4ADC5B: tenon::TenonParser::parsePrimaryExpr() (TenonParser.cpp:1530)
==2304392==    by 0x4ACE6E: tenon::TenonParser::parsePostfixExpr() (TenonParser.cpp:1424)
==2304392==    by 0x4ACD54: tenon::TenonParser::parseUnaryExpr() (TenonParser.cpp:1414)
==2304392==    by 0x4AC5DD: tenon::TenonParser::parseMulExpr() (TenonParser.cpp:1323)
==2304392==    by 0x4AC33B: tenon::TenonParser::parseAddExpr() (TenonParser.cpp:1289)
==2304392==    by 0x4ABF05: tenon::TenonParser::parseRelationalExpr() (TenonParser.cpp:1245)
==2304392==    by 0x4ABCB9: tenon::TenonParser::parseEqualityExpr() (TenonParser.cpp:1215)
==2304392== 
==2304392== 2,544 bytes in 120 blocks are definitely lost in loss record 15 of 15
==2304392==    at 0x483E340: memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2304392==    by 0x4940BE5: operator new(unsigned long, std::align_val_t) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==2304392==    by 0x4979D8: std::pmr::memory_resource::allocate(unsigned long, unsigned long) (memory_resource:100)
==2304392==    by 0x4B86E7: std::pmr::polymorphic_allocator<tenon::Type*>::allocate(unsigned long) (memory_resource:172)
==2304392==    by 0x4B7EC6: std::allocator_traits<std::pmr::polymorphic_allocator<tenon::Type*> >::allocate(std::pmr::polymorphic_allocator<tenon::Type*>&, unsigned long) (alloc_traits.h:305)
==2304392==    by 0x4B7447: std::_Vector_base<tenon::Type*, std::pmr::polymorphic_allocator<tenon::Type*> >::_M_allocate(unsigned long) (stl_vector.h:343)
==2304392==    by 0x4B6521: void std::vector<tenon::Type*, std::pmr::polymorphic_allocator<tenon::Type*> >::_M_realloc_insert<tenon::Type*&>(__gnu_cxx::__normal_iterator<tenon::Type**, std::vector<tenon::Type*, std::pmr::polymorphic_allocator<tenon::Type*> > >, tenon::Type*&) (vector.tcc:440)
==2304392==    by 0x4B373D: tenon::Type*& std::vector<tenon::Type*, std::pmr::polymorphic_allocator<tenon::Type*> >::emplace_back<tenon::Type*&>(tenon::Type*&) (vector.tcc:121)
==2304392==    by 0x4B20FA: tenon::TypeList::append(tenon::Type*) (TypePrivate.h:24)
==2304392==    by 0x56F09B: tenon::BinaryFileLoader::loadTypes(tenon::ModulePrivate*) (BinaryFileLoader.cpp:212)
==2304392==    by 0x56EB06: tenon::BinaryFileLoader::load(tenon::Task*, char const*, unsigned long) (BinaryFileLoader.cpp:158)
==2304392==    by 0x56DFE0: tenon::BinaryFileLoader::loadAllModules(tenon::Task*, std::filesystem::__cxx11::path const&) (BinaryFileLoader.cpp:57)
==2304392== 
==2304392== LEAK SUMMARY:
==2304392==    definitely lost: 5,024 bytes in 168 blocks
==2304392==    indirectly lost: 180 bytes in 9 blocks
==2304392==      possibly lost: 0 bytes in 0 blocks
==2304392==    still reachable: 0 bytes in 0 blocks
==2304392==         suppressed: 0 bytes in 0 blocks
==2304392== 
==2304392== For lists of detected and suppressed errors, rerun with: -s
==2304392== ERROR SUMMARY: 14 errors from 14 contexts (suppressed: 0 from 0)

~/project_ebox/bugfix/build/output/bin on  release_0.14.4_250621! ⌚ 14:52:53
$ valgrind --leak-check=full  --show-possibly-lost=no --show-reachable=no ./tlc -s main.t  -o main.tbin

~/project_ebox/bugfix/build/output/bin on  release_0.14.4_250621! ⌚ 14:53:14
$ cat main.t                                                                                           
module main{
void reloadTest(wobjdata wobj = void)
{
    // print("topoint = {}", topoint);
    // print("speed = {}", speed);
    // print("zone = {}", zone);
    // print("tool = {}", tool);
    if(present(wobj)){
        print("wobj = {}", wobj);
    }else{
        print("wobj = nullptr");
    }
    waittime(1);
}

const wobjdata wobj1 = {false, true, "wobj1", {{0, 0, 0}, {1, 0, 0, 0}}, {{0, 0, 0}, {0, 0, 0, 0}}};
void main(){
    num a = 0;
        // ConcTask("Task_A");

        while(true) {
            print("a = {}\n", a ++);
            waittime(1);

            //MLIN(pc1, v1000, fine, tool, wobj = wobjbase);
            reloadTest(wobj = wobj1);
            reloadTest(wobj = wobj1);
            reloadTest(wobj = wobj1);
            reloadTest(wobj = wobj1);
            reloadTest(wobj = wobj1);
            reloadTest(wobj = wobj1);
            //MCIRC(pc1, pc2, v10, fine, tool, wobj = wobjbase);
        }
}
}

基于 VitePress 构建