将一个字符串拷贝到一维的指针数组中,指定的位置,该如何解决

将一个字符串拷贝到一维的指针数组中,指定的位置
我想实现的是:
1、先申请一个一维数组指针
     int  i1=40;//i1是数组的个数
     char  *s1=new  char[i1*512*sizeof(char)];//这个数组是每个是512字节,一共i1个的一维数组
2、通过socket接收,传来的数组,但,顺序是不一定连续的。这就是需要将接收到的分片段,放到s1的对应的位置
     比如:
     //recv_s2;//是接收的buf
     strncpy(
                s1+i2*512,
                recv_s2,
                510
                );
     但是,这样是不行的。报错,内存越界。不知道如何实现?
请大侠们指点指点啊。谢谢
------解决方案--------------------
将一个字符串拷贝到一维的指针数组中,指定的位置,该如何解决显然是buffer不够大啊。
从s1+i2*512 这开始,放不下你的recv_s2 或者recv_s2中的510字节
------解决方案--------------------
你应该用memcpy吧
------解决方案--------------------
用memcpy