gpt4 book ai didi

c - 以数组作为参数的堆栈跟踪错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:52 25 4
gpt4 key购买 nike

我想修改字符数组中的单个随机元素,其中包括'0''1''2'。只有 '0' 可以修改,这就是为什么我首先将它们的索引放在另一个数组中(如果有更有效的方法,我很乐意更改它)。

但是,我得到了一个

cygwin_exception::open_stackdumpfile: Dumping stack trace

我知道问题出在这个函数上

void ai_move(char (*array)[10])
{
srand (time(NULL));

unsigned char* possible_indexes = {0};
int cpt = 0;
for (int i = 0; i < MAXDATASIZE - 1; ++i)
if ((*array)[i] == '0')
{
possible_indexes[cpt] = i;
++cpt;
}
int rand_index = rand() % (sizeof(possible_indexes) - 1);
(*array)[possible_indexes[rand_index]] = '1';
}

我这样调用它:

ai_move(&grid);

grid 包含我要修改的char数组,定义为:

char grid[MAXDATASIZE] = {'0', '0', '0', '0', '0', '0', '0', '0', '0'};

我知道问题可能出在我将 grid 作为参数的方式,但经过数小时的搜索后,我找不到可以改变任何事情的解决方案。

谢谢你帮助我。

最佳答案

unsigned char* possible_indexes = {0};    

好吧,您声明了一个指针,但没有为其分配足够的内存(准确地说您甚至没有分配内存),并尝试在以后的迭代中写入无效位置。

 possible_indexes[cpt] = i;

首先将内存分配给 possible_indexes,然后尝试将其写入或声明为具有所需大小的数组。

注意 - 关于 sizeof(possible_indexed) 在此 -

  int rand_index = rand() % (sizeof(possible_indexes) - 1);

这将给出指针的大小,而不是通常需要的大小,即元素的数量。

关于c - 以数组作为参数的堆栈跟踪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34383351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com