异常:内存位置0x00CFEC24的std :: length_error

时间:2020-04-21 13:12:28

标签: c++ error-handling

这是我的方法之一,哈希有效且已正确分配,但在它退出功能之前,“ blockHash”变为“”,这给了我上面的错误。

Block::Block(int index, const double amount, const std::string& senderKey, 
const std::string& 
receiverKey, const std::string& prevHash, time_t timestamp)
:nrTransactions(0)
{
std::string str = std::to_string(amount);
this->blockHash = generateHash(str);
}

这似乎是问题所在的功能:

std::string& Block::generateHash(const std::string& str)
{
std::string hash = sha256(str);
return hash;
}

对于第一个区块,我的金额为“ 0”。

1 个答案:

答案 0 :(得分:4)

您正在返回对局部变量的引用。那绝对是问题。将返回类型更改为std :: string

 std::string Block::generateHash(const std::string& str)
 {
     std::string hash = sha256(str);
     return hash;
 }