2012-09-27 52 views
-4

我希望能够实现与memcpy相同的结果,而不用实际使用memcpy。找到一种不使用memcpy就能完成memcpy的方法

这是我想从memcpy改变的代码。

memcpy((char *) &(serv_addr.sin_addr.s_addr), 
    (char *)(server->h_addr), server->h_length); 

有没有办法做到这一点?

+2

你为什么要这么做? –

+0

memcpy导致错误,并修复我将不得不重新安装操作系统。 – user1601045

+0

答案当然是“是”。 'memcpy'是重新实现自己的一个相当平凡的函数。 –

回答

2

您可以使用for循环轻松地重新编码memcpy。如果编译器提供内在函数,则可以使用它们。 Gcc有__builtin_memcpy。但最重要的是,你这样做可能是错误的,memcpy在任何地方都可以使用,而且不可能是越野车。

0

只是胡乱猜测:您发现此代码的某个地方在网络上,并意外地扭转了参数的memcpy()电话:

memcpy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, 
    server->h_length); 

只需切换回,你的运行时错误就会消失。