calcitem / chaosclock

C++ implementation of the "Chaos Clock" game invented by ejsoon, related information: https://quanquan.space/viewtopic.php?t=852
https://ejsoon.win/chaosclock/
1 stars 1 forks source link

問下以下代碼為何出錯? #19

Closed ejmoog closed 1 year ago

ejmoog commented 1 year ago
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

struct Position
{
    uint64_t board = 0;
    vector<Position *> children; // 24 Bytes
};

vector<Position *> board_map[28];

int main()
{
    Position *ccc = new Position();
    ccc->board = 122332ll;
    board_map[7] = ccc;
    return 0;
}

想給一個指針數組賦值。

calcitem commented 1 year ago

这段代码出错是因为您声明了一个指针数组board_map,但是并没有为其分配内存空间,导致在尝试给其中的某个元素赋值时出错。

您可以使用resize()方法为board_map分配内存空间,如下所示:

vector<Position *> board_map(28);

这样就会创建一个包含28个指针的vector,并将每个指针初始化为nullptr。然后,您就可以通过索引操作符将新的指针赋给board_map中的元素,如下所示:

Position *ccc = new Position();
ccc->board = 122332ll;
board_map[7] = ccc;

请注意,在使用动态内存分配时,最好在不再需要使用指针时,及时释放内存空间,以避免内存泄漏。

ejmoog commented 1 year ago

學到了。