明示的な定義のない関数

私はC ++を学んでいます。 ポインターで手をたたくと、彼にとって興味深い例が出てきました。 彼はおそらく経験のある人には興味がないでしょうが、とにかく危険を冒します。
typedef int (*pf)( int , int );
char c[] = {85,-119,-27,-117,69,12,3,69,8,93,-61,-112};
pf sum = (pf)c; //reinterpret_cast .
cout << sum(2,3); // 5.


* This source code was highlighted with Source Code Highlighter .
現在、sumはこれに類似した加算関数です。
int sum(int a, int b){return a+b;}

私が思いつくことができる唯一の便利なアプリケーションは、そのような幽霊の危険を恐れることです。

UPD ileyに提案したように 、これは一般的にCを指します。

UPD 1行:
cout << ((int (*)(int, int))"\x55\x89\xE5\x8B\x45\x0C\x03\x45\x08\x5D\xC3")(2,3)
思考については0lympian 、修正についてはhalyavinに感謝します


Source: https://habr.com/ru/post/J71234/


All Articles