簡體   English   中英

將數據插入映射變量時發生訪問沖突錯誤

[英]Access violation error on inserting data to map variable

我在頭文件中聲明了一個映射變量,並嘗試從cpp文件中的方法為此插入一些值。

在標頭( .h )文件中,

class Test
{
public:
    void AddName(const std::string& name, const std::string& value);
private:
    std::map<std::string, std::string> m_names;
};

.cpp文件中,

void Test::AddName(const std::string& name, const std::string& value)
{
    m_names.insert(std::pair<std::string, std::string>(name, value));
}

此方法引發錯誤:“ 0xC0000005:訪問沖突讀取位置0x0000000000000150。”

但是,如果我在此AddName method聲明此映射變量,則不會出錯。

我正在從另一個具有必需參數的類中調用此AddName方法。

TestPtr test = nullptr;
test->AddName(nodeDetails.Attribute("Name"), nodeDetails.Attribute("Value"));

有什么問題

在使用之前必須實例化test對象:

TestPtr test;
test.addName(...);

或動態分配(使用new

TestPtr* test = new TestPtr();
test->AddName(...);
//
//...
//    
//And don't forget to free memory
delete test; 

(在您的情況下,第一種方法更“內存安全”;))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM