1
私はプロジェクトにPBCライブラリを使用していますが、データを格納する場所にはelement_t
配列があります。element_t配列内のセグメンテーションフォルト
アレイにelement_t
をコピーしようとすると、gdb
でデバッグすると、segmentation fault
エラーが発生します。
using namespace std;
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <pbc.h>
#include <pbc_test.h>
int main(int argc, char **argv) {
const int t = 2;
const int n = 3;
element_t r[t];
element_t s[n];
pairing_t pairing;
element_t P, s0, P0;
pbc_demo_pairing_init(pairing, argc, argv);
cout<<"SETUP STAGE"<<endl;
element_init_G1(P, pairing);
element_random(P);
element_printf("P = \t%B\n", P);
/* Build the table with each element is r_i */
element_t r_i;
for (int i = 0; i < t; i++)
{
element_init_Zr(r_i, pairing);
element_random(r_i);
/* Put r_i into the array */
element_set(r[i], r_i); // <--- segmentation fault here
element_clear(r_i);
}
/* Set s = r0 */
element_init_Zr(s0, pairing);
element_random(s0);
/* Put it in the first place in the vector of all si */
element_set(s[0], r[0]);
/* Compute P = s*P0 */
element_mul_zn(P0, P, s0);
element_printf("P0 = %B\n", P0);
element_clear(P);
pairing_clear(pairing);
return 0;
}
私はこれをエラーとして得た:誰もがすでに配列にelement_t
Sを入れてみましたよう
Program received signal SIGSEGV, Segmentation fault.
0x000000000002721f in ??()
ここ
はMWEのですか?
私は「このライブラリについて知っているが、どこではありませんnは定義されていますか? – user1754322
申し訳ありませんが、私はこの行を忘れてコピーします。これはtと同じ整数です。 – EisenHeim
私は 'element_t'を初期化する必要があると推測します。もしそれが 'element_t r [t] = {}'で初期化されていれば、あなたの問題を解決するはずです。 –