element_t数组中的分段错误

时间:2016-05-17 10:29:43

标签: c++ arrays cryptography

我将PBC库用于项目,我尝试使用element_t数组,存储一些数据。

当我尝试将segmentation fault复制到数组中时,在使用gdb进行调试时出现element_t错误。

这是一个MWE:

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;
}

我认为这是错误:

Program received signal SIGSEGV, Segmentation fault.
0x000000000002721f in ?? ()

有没有人尝试将element_t放入数组?

1 个答案:

答案 0 :(得分:0)

正如评论中所讨论的,错误来自于version: '2' services: web: build: . ports: - "4000:4000" volumes: - .:/app depends_on: - db db: image: postgres:9.4.8

的初始化

这是MWE更正,有效:

element_t