次の構造定義があります。
struct info_link {
char url[100];
http_response *(*worker)(http_request *request, char *arguments);
long url_length;
};
ご覧のとおり、「worker」は関数ポインタです。
今、私は次の機能を持っています:
http_response *info_show_providers(http_request *request, char *arguments) {
char *test = new char[100];
long i = 5;
}
そして、次のように、1 つのメンバーを含む単純な info_link 配列を定義します。
info_link internal_links[] = {
{"/show_providers", info_show_providers, 15}
};
私は電話しようとしています:
internal_links[0].worker(x,x);
プログラムは「info_show_providers」関数にアクセスしますが、「new char [100]」関数で毎回失敗します。
SIGABRT をスローします。
関数ポインタの呼び出し方が間違っているのではないでしょうか? またはスタックを破損しますか?
それはどのように適切に行われるべきですか?