我是C ++的新手,我正在写一个简单的区块链程序,作为一种练习。当我运行以下代码时,似乎出现了种错误:
Process returned -1073741819 (0xC0000005)
代码如下:
#include <iostream>
#include <time.h>
#include <string>
using namespace std;
class Block
{
int data, previous_hash;
public:
string timestamp;
Block(string a, int b, int c)
{
timestamp = a;
data = b;
previous_hash = c;
};
};
string getTime()
{
time_t now = time(NULL);
struct tm tstruct;
char buf[40];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%X", &tstruct);
return buf; //Simple code to return current time
}
class BlockChain
{
public:
Block chain[];
BlockChain()
{
chain[0]=createGenesisBlock();
}
Block createGenesisBlock()
{
return Block(getTime(), 10, 0);
}
};
int main()
{
BlockChain myChain;
cout << "current time is " << getTime();
cout << myChain.chain[0].timestamp; //Is this correct?
}
我在main()中包含了一行以访问对象timestamp
中的字符串mychain
。我怀疑这可能是问题所在,但是我不确定在Blockchain
和Block
类上调用时间戳时,还能如何访问时间戳。
答案 0 :(得分:1)
当前,"movies/BySelected/{year:length(4)}/{month:length(2)}
是一个大小未知的数组。但是,当您在BlockChain::chain
的构造函数中访问chain[0]
时,您会假设 BlockChain
指向有效内存,但这并不是因为您从未初始化它。这就是为什么由于内存访问错误而导致崩溃的原因。我建议使用chain
代替std::vector<Block>
,您可以根据需要调整大小:
Block[]