在使用语言为C++与python的项目中,调用新增的C++函数后出现段错误,该如何解决?

1,在新增一个C++函数并调用该函数后,造成“段错误”,该函数如下:

//计算在当前牌型下,当前手牌的潜力值
//i公共牌数量,n为对手个数,a_val手牌,open_card公共牌   要求i=3/4
db pre_multi_final(int i, int n, int a_val[], int open_card[]) {
	db ppot=0, better = 0, worse = 0, total = 0, eq = 0;
	int current_HSn=0, later_HSn=0;

	me(card);
	card[a_val[1]] = 1;
	card[a_val[2]] = 1;
	rep(k, 1, i) {
		card[open_card[k]]= 1;
	}

	current_HSn = calcu_multi(i, n, a_val, open_card);

	//模拟增加公共牌,计算增加公共牌之后的牌力值
	rep(k, 8, 59) {
		if (card[k] == 0) {
			open_card[i + 1] = k;
			later_HSn = calcu_multi(i + 1, n, a_val, open_card);
			total++;
			better += (current_HSn < later_HSn);
			eq += (current_HSn == later_HSn);
			worse += (current_HSn > later_HSn);
		}
	}

	ppot = ((better + eq/2)/total);

	return ppot;
}

2,已尝试的解决方案:

  1. 排查内存的非法访问:将局部变量初始化。
  2. 可能因素:全局数组过大。数组声明如下:
typedef struct {
    int seq_num, prime_num, rank;
}match;
//这个数据结构用于存储排名,以五张牌的素数特征值作为第一字典序
match flushes[2000], other[7000];

 

把C代码贴出来看看

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632