From 7e63aa1217c163e85d547eb1fbe49ab2eeb0c727 Mon Sep 17 00:00:00 2001 From: EmsiaetKadosh Date: Thu, 6 Mar 2025 22:25:43 +0800 Subject: [PATCH] =?UTF-8?q?gc=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 1 + Chars.h | Bin 6612 -> 7888 bytes Game.cpp | Bin 634 -> 746 bytes Game.h | Bin 4260 -> 4140 bytes IText.cpp | Bin 9874 -> 9988 bytes Renderer.h | Bin 13654 -> 13510 bytes Window.cpp | Bin 20300 -> 20374 bytes Window.h | Bin 14290 -> 14196 bytes def.cpp | Bin 1472 -> 2946 bytes def.h | Bin 12104 -> 15502 bytes gc.h | 6 +++--- main.cpp | Bin 21310 -> 23324 bytes utils.h | 6 +++--- xWindows.h | Bin 2574 -> 2594 bytes 14 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 60bd3ab..bff4f24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") add_compile_options(/source-charset:utf-8) add_compile_options(/execution-charset:utf-8) endif () +add_compile_options(/Zc:preprocessor) include(CTest) enable_testing() diff --git a/Chars.h b/Chars.h index 1a15acc25f5756cff1094189c300d2cbb9c14685..fbb672968afec7cf3be88890a19b9311688a148d 100644 GIT binary patch delta 229 zcmca&e8F~uKQp7kWIyJ!j0&5jSQfGXIlDO8Ctu_$*=)}_iE*;AxX9#aZa(QWhD?SW zAS`B3V6bDb1(Fs(Tmys(lQXzuS+#&XlgV{LH#aZlVPo3t$jQXWU&v6-P{NQ8B$F5n z8O$bs;46fgCyQwwPz92Snw)_Q;SBx^K@2XFS8&V1&G$tT*WPXm)t1I)7@1fT?y!3c)4%MJnolfMd%lV21%lYt33lS>OElT8;8 zlbsM4ld}sn1uXy|05Ox`5KXf=43YwqtpqBQzYiR4R>QjK4 zPz}js$YV%n&|pXd8w@fwoB<@30yMasL6gCnfs26?$V&yvr-Ch20Q0b$0&-XZP*o;S TcOF!CEzkrmu$eiNy_gID`zk9O delta 62 zcmaFG`io`4&WV@RCjM5MY|f}OIhygoWM)P&MQa8w22O?)hE#?eAT9x71%_mXM1}$& OJCh-wA#d_3CI}US75LKLInndTq@9n6owomeMLa?OMt42fHFXplU+Ei8EZFJ IaBg7(07|17!2kdN diff --git a/IText.cpp b/IText.cpp index e69cb48aaaae16d498f0ce5a0ae1726150a8e506..10af54c98a928e4a4e68f0ac5226aacb8ab4c70e 100644 GIT binary patch delta 141 zcmbQ_+v2w&TUIiWAqNQa8IlznG97xnS6${ z$!A!k#WjIqT1euW4Au->44jh#I7ByZl>NY{nF3UdYHTJ$9z!~V2GEjxAS(@MU^>uP P&B+JYc`a+hPoc@Ph4?rN7>XD&8S)rPCQlHQX4ILyK~Q>fKEKoEpF(F90Xl*XnE(I) diff --git a/Window.cpp b/Window.cpp index 76fd8c2fd7e6a7090a8bb0158bd5e10e445b3213..cbcff94b683da41aa5f4e67c18ec927432f82181 100644 GIT binary patch delta 113 zcmX>zk8#?3#tj#JS-BWE88|0j^3@hkWXJ)+e1>F(M1~TERE87=Hz2QQ@-JUocCad- sIt#x@Lnxb}7^o(PA&o(gp#Z3^fI)*nlfjw+B3lb&gCLkcd5+%(0M}6#q5uE@ delta 41 ucmbO>pYhB*#tj#J85Jg9^VOa#?PmpK#rQ>XD=^eDXab=%gTmxzej5NW(G4pA diff --git a/Window.h b/Window.h index da7920aecc8afa1ce624bd53999278aecb34a0f3..98288d31eab0f3e80694fe3b77f93c9099277e27 100644 GIT binary patch delta 204 zcmcbV|0Qq3Y(rNC27LxC1_eLf=?tBX3@Hq$3^_nt!jSr(Cw)SCOX@dfq)pB<3ztj;8kYmqn#_<0 zG8CxQ4ah5E(3sp{uF44#sQ`*=PX1tK3D$GQzOkS_WvDwyW0W)_p&>^V| ti6HAIKQIlS9B8IDxzWrFMf{9`^<-5up~;HoF1*%2N7e$JRm%W0768&XFsc9m diff --git a/def.cpp b/def.cpp index 67eb6c850468e1b5dbbe5fd3ba14c0ff0888b850..4defbef958996814538ed6f5316efe2cd7adcce0 100644 GIT binary patch literal 2946 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 delta 516 zcmeCHJP|jce&Xk#$+?WLHrFxQftEYtw46Z+?AmyS0EQr-OGAJ#5~vNP zJ_P7kf1t%c$4<78mA3~u8YYL~5x7}t45dKplfl+QJeCJ^D9~$@{n(W^&t==kIXO_M zU~;g&-DYvQW6Yu;Zewk`IHVaPUbZ;nk=otwOL)|6Ei15&Q3#? z6TzL_VCX(so`-GnNeiCI_Ev0@b)_UG?>FV)RzNb&&FCv5icR?pB@7urn~OH*n6!gz iGTZEGX2gnQteuAG(ptr); } + void collect() override { delete static_cast(deallocating(ptr)); } protected: - void deleteThis() override { delete this; } + void deleteThis() override { delete deallocating(this); } }; class GarbageCollector { @@ -76,7 +76,7 @@ public: /** 只能在gameThread调用 */ template void submit(T* ptr) noexcept(false) { - IGarbage* garbage = new Garbage(ptr); + IGarbage* garbage = allocatedFor(new Garbage(ptr)); if (IGarbage* end = submittedEnd) { // 后续添加,可能存在线程竞争 while (end->next) end = end->next; // 理论上不会进入循环,但防止万一 end->next = garbage; diff --git a/main.cpp b/main.cpp index 9346221f063e3152b698fefb3b4b56f74c1078df..a40cc848a9ba528e57fa9192f81ff7ad09d83a62 100644 GIT binary patch delta 1898 zcmc&#Jxc>Y5Phja#6k5{~6|XJ=+-XWqPhe@;EUrCz>ECpCERp^!xtT?AYyG&l+zEnITQ z{vFP^-{z=O<|EHplb;8Nvw$*p@OZdBNT04~MawQa^wOsGCU%U+JZhBqlm{b8hjtEq zwBgdDSlm-0`eoV`W45+ti@J4eV~?7BEFoi}lk>{(G`C80)ubzheSV?49PIC$!Fbg5 zd4U#nE*Myqt6)Me$1oy461>aQ6zE%mZZZTpKAuFKD2u$6LXSi8J-pGB3)y*AQJ9*> z4W@IP?kIXm>PT&O)I2OrCg|? zXIj^mW=&cSxa(4;PZq4(IN9LjES_V{v=sP?}c5fajEi5zPxIJ5UFiQ?-_#z!H&Fi3R_dy PIn::operator==(const AnywhereIteratorEnd& other) const template int AnywhereEditableList::pushCopy(T* value) noexcept { - T* nv = new T(*value); + T* nv = allocatedFor(new T(*value)); return pushNewed(nv); } @@ -191,7 +191,7 @@ int AnywhereEditableList::pushThis(T* value) noexcept { template int AnywhereEditableList::pushNewed(T* value) noexcept { const int ret = pushThis(value); - if (ret) delete value; + if (ret) delete deallocating(value); else value->managedByList = true; return ret; } @@ -205,6 +205,6 @@ int AnywhereEditableList::pop(T* value) noexcept { value->list = nullptr; value->next->prev = value->prev; value->prev->next = value->next; - if (value->managedByList) delete value; + if (value->managedByList) delete deallocating(value); Success(); } diff --git a/xWindows.h b/xWindows.h index 4755984b287b4964cf06f7b230321a5cacdc0c8d..28bdde66ea53b746eef4bf818c7467208884dd82 100644 GIT binary patch delta 59 zcmeAZStPRIFf(&LL)zwZ%qLmp6B%-VFrOirA(5ekA(bJ8!41eOV$fj71M7kkpv`k5Ojx6Xw;dta(6g`NR#9j2e?qaYg_DJx>k*