我在寫一個簡單的內存競技場分配器,並面臨一個異常安全的小問題。情況是當你分配一個本身調用分配器的對象時。內存池的目標是一次分配一堆對象,然後在池被銷燬時全部刪除它們。 {
MemoryArena m;
std::string* ptr = m.Allocate<std::string>();
// use ptr whatever
// Cleaned up
如何確保某個類的某個實例永遠不會爲空?有人告訴我使用Debug.Assert(),但通過這樣做,我只能確保代碼在調試模式下工作,而我想確保發行版中的is-never-null條件。 例如,在過去,我寫了這樣的代碼: public string MyString
{
get
{
if(instance1.property1.Equals("bla"))
{
re
我正在討論如何正確處理容器參數。 我們有一個函數,它在容器參數,並希望只返回裝滿容器什麼功能付諸它: class bar;
void foo(std::vector<bar> &bars)
{
//do stuff that fills bars.
//exceptions may be thrown.
//we may also legally return