1

コードに構造体ポインタがあります

struct evkeyvalq *headers;

ここで、構造体にいくつかの情報を入力する関数を呼び出します。

evhttp_parse_query(uri, headers)

この行でセグメンテーション違反が発生します。これを行う正しい方法は何でしょうか。ありがとう

4

1 に答える 1

2

structevkeyvalqにメモリを割り当てる必要があります。これでコードは初期化されていないポインタをevhttp_parse_query()に渡し、evhttp_parse_query()が正しく動作する方法はありません。

構造体をスタックに割り当てます。

struct evkeyvalq headers;
evhttp_parse_query(uri, &headers);

または、動的に割り当てられたメモリを使用します。

struct evkeyvalq *headers = malloc(sizeof *headers);
if(headers != NULL) {
    evhttp_parse_query(uri, headers);
}
于 2012-08-25T00:46:16.863 に答える