應(yīng)用程序中對(duì)象的管理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本公開(kāi)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序中對(duì)象的管理方法及裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的發(fā)展,為了實(shí)現(xiàn)應(yīng)用程序的各種功能,應(yīng)用程序管理員會(huì)使用C++在應(yīng)用程序中創(chuàng)建各種對(duì)象。由于所創(chuàng)建的對(duì)象影響著應(yīng)用程序的性能,因此,如何對(duì)應(yīng)用程序中的對(duì)象進(jìn)行管理,成為本領(lǐng)域技術(shù)人員較為關(guān)注的問(wèn)題。
[0003]目前,對(duì)于C++編寫(xiě)的應(yīng)用程序,需要應(yīng)用程序管理員手動(dòng)地對(duì)所創(chuàng)建的對(duì)象進(jìn)行管理。當(dāng)任一對(duì)象在應(yīng)用程序中不再被應(yīng)用,但該應(yīng)用程序因創(chuàng)建代碼出現(xiàn)錯(cuò)誤,導(dǎo)致該應(yīng)用程序不能被釋放,此時(shí)應(yīng)用程序管理員需要先找到該對(duì)象的創(chuàng)建位置,進(jìn)而通過(guò)修改該對(duì)象創(chuàng)建位置上的代碼,使得該對(duì)象可釋放占用的內(nèi)存。然而,當(dāng)應(yīng)用程序管理員無(wú)法找到該對(duì)象的創(chuàng)建位置時(shí),該對(duì)象所占用的內(nèi)存將會(huì)一直被占用,最終導(dǎo)致應(yīng)用程序無(wú)法運(yùn)行。
[0004]公開(kāi)內(nèi)容
[0005]為克服相關(guān)技術(shù)中存在的問(wèn)題,本公開(kāi)提供一種應(yīng)用程序中對(duì)象的管理方法及裝置。
[0006]根據(jù)本公開(kāi)實(shí)施例的第一方面,提供一種應(yīng)用程序中對(duì)象的管理方法,所述方法包括:
[0007]在待創(chuàng)建的追蹤對(duì)象所屬的類(lèi)中,重載創(chuàng)建操作符;
[0008]基于重載后的創(chuàng)建操作符,創(chuàng)建所述追蹤對(duì)象;
[0009]在全局列表中為所述追蹤對(duì)象添加位置表項(xiàng),所述位置表項(xiàng)中至少包括所述追蹤對(duì)象的創(chuàng)建位置參數(shù)。
[0010]可選地,所述追蹤對(duì)象的創(chuàng)建位置參數(shù)至少包括所述追蹤對(duì)象在程序源文件中的文件名稱(chēng)、函數(shù)名稱(chēng)及行號(hào)。
[0011]可選地,所述基于重載后的創(chuàng)建操作符,創(chuàng)建所述追蹤對(duì)象,包括:
[0012]獲取所述追蹤對(duì)象的創(chuàng)建位置參數(shù)對(duì)應(yīng)的宏關(guān)鍵字;
[0013]將所述創(chuàng)建位置參數(shù)對(duì)應(yīng)的宏關(guān)鍵字添加到所述重載后的創(chuàng)建操作符的輸入?yún)?shù)中,得到新的輸入?yún)?shù);
[0014]基于所述新的輸入?yún)?shù),調(diào)用重載后的創(chuàng)建操作符,再調(diào)用全局創(chuàng)建操作符,創(chuàng)建所述追蹤對(duì)象。
[0015]可選地,所述方法還包括:
[0016]在待創(chuàng)建的追蹤對(duì)象所屬的類(lèi)中,重載釋放操作符;
[0017]基于重載后的釋放操作符,刪除所述追蹤對(duì)象對(duì)應(yīng)的位置表項(xiàng)。
[0018]可選地,所述基于重載后的釋放操作符,刪除所述追蹤對(duì)象對(duì)應(yīng)的位置表項(xiàng),包括:
[0019]調(diào)用重載后的釋放操作符,調(diào)用全局釋放操作符,再調(diào)用所述追蹤對(duì)象所屬的類(lèi)對(duì)應(yīng)的析構(gòu)函數(shù);
[0020]根據(jù)所述析構(gòu)函數(shù),將所述追蹤對(duì)象對(duì)應(yīng)的位置表項(xiàng)在所述全局列表中刪除。
[0021 ] 可選地,所述方法還包括:
[0022]為創(chuàng)建位置表項(xiàng)操作與刪除位置表項(xiàng)操作設(shè)置互斥鎖,使得所述創(chuàng)建位置表項(xiàng)操作與刪除位置表項(xiàng)操作不能同時(shí)進(jìn)行。
[0023]可選地,所述方法還包括:
[0024]當(dāng)檢測(cè)到所述追蹤對(duì)象不再被應(yīng)用,根據(jù)所述位置表項(xiàng)中的創(chuàng)建位置參數(shù),定位所述追蹤對(duì)象在程序源文件中的創(chuàng)建位置。
[0025]根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種應(yīng)用程序中對(duì)象的管理裝置,所述裝置包括:
[0026]第一重載模塊,用于在待創(chuàng)建的追蹤對(duì)象所屬的類(lèi)中,重載創(chuàng)建操作符;
[0027]創(chuàng)建模塊,用于基于重載后的創(chuàng)建操作符,創(chuàng)建所述追蹤對(duì)象;
[0028]添加模塊,用于在全局列表中為所述追蹤對(duì)象添加位置表項(xiàng),所述位置表項(xiàng)中至少包括所述追蹤對(duì)象的創(chuàng)建位置參數(shù)。
[0029]可選地,所述添加模塊在全局列表中為所述追蹤對(duì)象添加的位置表項(xiàng)中的創(chuàng)建位置參數(shù)至少包括所述追蹤對(duì)象在程序源文件中的文件名稱(chēng)、函數(shù)名稱(chēng)及行號(hào)。
[0030]可選地,所述創(chuàng)建模塊,用于獲取所述追蹤對(duì)象的創(chuàng)建位置參數(shù)對(duì)應(yīng)的宏關(guān)鍵字;將所述創(chuàng)建位置參數(shù)對(duì)應(yīng)的宏關(guān)鍵字添加到所述重載后的創(chuàng)建操作符的輸入?yún)?shù)中,得到新的輸入?yún)?shù);基于所述新的輸入?yún)?shù),調(diào)用重載后的創(chuàng)建操作符,再調(diào)用全局創(chuàng)建操作符,創(chuàng)建所述追蹤對(duì)象。
[0031]可選地,所述裝置還包括:
[0032]第二重載模塊,用于在待創(chuàng)建的追蹤對(duì)象所屬的類(lèi)中,重載釋放操作符;
[0033]刪除模塊,用于基于重載后的釋放操作符,刪除所述追蹤對(duì)象對(duì)應(yīng)的位置表項(xiàng)。
[0034]可選地,所述刪除模塊,用于調(diào)用重載后的釋放操作符,調(diào)用全局釋放操作符,再調(diào)用所述追蹤對(duì)象所屬的類(lèi)對(duì)應(yīng)的析構(gòu)函數(shù);根據(jù)所述析構(gòu)函數(shù),將所述追蹤對(duì)象對(duì)應(yīng)的位置表項(xiàng)在所述全局列表中刪除。
[0035]可選地,所述裝置還包括:
[0036]設(shè)置模塊,用于為創(chuàng)建位置表項(xiàng)操作與刪除位置表項(xiàng)操作設(shè)置互斥鎖,使得所述創(chuàng)建位置表項(xiàng)操作與刪除位置表項(xiàng)操作不能同時(shí)進(jìn)行。
[0037]可選地,所述裝置還包括:
[0038]定位模塊,用于當(dāng)檢測(cè)到所述追蹤對(duì)象不再被應(yīng)用,根據(jù)所述位置表項(xiàng)中的創(chuàng)建位置參數(shù),定位所述追蹤對(duì)象在程序源文件中的創(chuàng)建位置。
[0039]根據(jù)本公開(kāi)實(shí)施例的第三方面,提供一種應(yīng)用程序中對(duì)象的管理裝置,包括:
[0040]處理器;
[0041]用于存儲(chǔ)處理器可執(zhí)行的指令;
[0042]其中,所述處理器被配置為:
[0043]在待創(chuàng)建的追蹤對(duì)象所屬的類(lèi)中,重載創(chuàng)建操作符;
[0044]基于重載后的創(chuàng)建操作符,創(chuàng)建所述追蹤對(duì)象;
[0045]在全局列表中為所述追蹤對(duì)象添加位置表項(xiàng),所述位置表項(xiàng)中至少包括所述追蹤對(duì)象的創(chuàng)建位置參數(shù)。
[0046]本公開(kāi)的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
[0047]在創(chuàng)建待追蹤對(duì)象時(shí),在全局列表中為追蹤對(duì)象添加位置表項(xiàng),并在檢測(cè)到該對(duì)象不再被應(yīng)用時(shí),根據(jù)位置表項(xiàng)中的創(chuàng)建位置參數(shù),可快速、準(zhǔn)確地定位該對(duì)象在程序源文件中的創(chuàng)建位置,進(jìn)而通過(guò)更改該對(duì)象的創(chuàng)建代碼,使該對(duì)象占用的內(nèi)存被釋放,保證了應(yīng)用程序能夠順利運(yùn)行。
[0048]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開(kāi)。
【附圖說(shuō)明】
[0049]此處的附圖被并入說(shuō)明書(shū)中并構(gòu)成本說(shuō)明書(shū)的一部分,示出了符合本公開(kāi)的實(shí)施例,并與說(shuō)明書(shū)一起用于解釋本公開(kāi)的原理。
[0050]圖1是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用程序中對(duì)象的管理方法的流程圖。
[0051]圖2是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用程序中對(duì)象的管理方法的流程圖。
[0052]圖3是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用程序中對(duì)象的管理裝置的結(jié)構(gòu)示意圖。
[0053]圖4是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用程序中對(duì)象的管理裝置的框圖。
【具體實(shí)施方式】
[0054]這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開(kāi)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本公開(kāi)的一些方面相一致的裝置和方法的例子。
[0055]圖1是根據(jù)一示例性實(shí)施例示出的一種應(yīng)用程序中對(duì)象的管理方法的流程圖,如圖1所示,應(yīng)用程序中