C - вызов функции через func_ptr, почему это не работает?

у меня есть следующий код:

void print(const char* str){
      system_call(4,1,str,strlen(str)); }

void foo2(void){ print("goo \n");}


void buz(void){ ...}

int main(){
char buf[256];
    void (*func_ptr)(void)=(void(*)(void))buf;
    memcpy(buf,foo2, ((void*)buz)-((void*)foo2));
    func_ptr();
    return 0;
}

вопрос в том, почему этот код упадет?

ответ был, что-то о вызове функции не через указатель относится к относительному адресу, а я не смог понять, что здесь не так? какая строка проблемная?

спасибо за вашу помощь

5
задан Prof. Falken supports Monica 18 June 2011 в 21:14
поделиться