void print( char * str ){ printf("%s",str); }
void some_function(){
... Loads a file into `char * buffer` ...
... Stores the function print before `buffer` address ...
((void(*)(void))buffer();
}
このファイルには、「Hello World」と、いくつかの判読不能な文字が含まれています。バッファを実行すると、「HelloWorld」が出力されます。
私はあなたがこのようなポインタを実行できることを知っています:
void (*foo)(int) = &bar; // such that void bar(int)
(*foo)(123);
しかし、void(int)関数をその関数とパラメーターをメモリ内に持つvoid(void)関数として実行するのは、私にとっては初めてのことです。
このように実行できるように、関数がメモリ内でどのように見えるか(文字列がヌル文字で終了するなど)の標準はありますか?