Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #147449

Re: memcpy not memcpying?

From James Kuyper <jameskuyper@alumni.caltech.edu>
Newsgroups comp.lang.c
Subject Re: memcpy not memcpying?
Date 2019-11-01 09:24 -0400
Organization A noiseless patient Spider
Message-ID <qphblr$leg$1@dont-email.me> (permalink)
References <2LVuF.7$BF1.0@fx26.iad> <qSVuF.94$kE3.74@fx36.iad>

Show all headers | View raw


On 11/1/19 8:49 AM, DFS wrote:
> On 11/1/2019 8:42 AM, DFS wrote:
>> Just trying to combine 2 arrays:
>> ====================================================================
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <string.h>
>>
>> int i = 0;
>>
>> void combinearrays(int a, int b, char *x[], char *y[], char *z[]) {
>>      memcpy(z,   x, a);

It would appear from context that you intend to copy a elements from the
array x to the array z. The third element of memcpy() indicates how many
bytes to copy, not the number of elements to copy. What is the element
type of those arrays? Do you have any particular reason to think that
the size of that type is 1?

>>      memcpy(z+a, y, b);
>> }
>>
>> int main(int argc, char *argv[]) {
>>      char *x[] = {"adf1","fg7","Dxx","eff","Mnn","opp","zaa"};
>>      char *y[] = {"A","c","p","S","x"};
>>      int j = sizeof(x)/sizeof(x[0]);
>>      int k = sizeof(y)/sizeof(y[0]);
>>
>>          char **z = malloc(j+k);
> 
>          combinearrays(j,k,x,y,z);   //forgot this line

On a typical modern implementation of C, sizeof(char*) is often 4, so
I'll use that value in the following explanation.
At this point, j should have a value of 7, while k should have a value of 5.

Therefore, your first memcpy() call copies the first 7 bytes of x into
z. That would copy x[0] into z[0], and the first three bytes of x[1]
into z[1]. The last byte of z[1], and all of the bytes of z[2], z[3],
z[4], z[5] and z[6] would remain uninitialized.

The second memcpy() call copies the first 5 bytes of y into z, starting
at z+7. That would copy y[0] into z[7], and the first byte of y[1] into
z[8]. The remaining 3 bytes of z[8], and all of the bytes of z[9],
z[10], and z[11] are uninitialized.

>>      i=0;
>>      while (i<j)   printf("%s ",x[i++]);
>>      printf("\n");
>>
>>      i=0;
>>      while (i<k)   printf("%s ",y[i++]);
>>      printf("\n");
>>
>>      i=0;

As a result of those uninitialized bytes, z[1] isn't even required to
contain a valid pointer value, and the behavior of z[i++] is therefore
undefined as soon as i==1.

>>      while (i<j+k) printf("%s ",z[i++]);
>>
>>      free(z);
>>      exit(0);
>> }
...
> adf1 fg7 Dxx eff Mnn opp zaa
> A c p S x
> adf1 Çn

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

memcpy not memcpying? DFS <nospam@dfs.com> - 2019-11-01 08:42 -0400
  Re: memcpy not memcpying? DFS <nospam@dfs.com> - 2019-11-01 08:49 -0400
    Re: memcpy not memcpying? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-11-01 09:24 -0400
      Re: memcpy not memcpying? DFS <nospam@dfs.com> - 2019-11-01 09:46 -0400
        Re: memcpy not memcpying? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-11-01 09:49 -0400
        Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-01 10:19 -0700
          Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-01 21:14 +0100
          Re: memcpy not memcpying? DFS <nospam@dfs.com> - 2019-11-01 17:16 -0400
            Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-01 22:42 +0000
              Re: memcpy not memcpying? Richard Damon <Richard@Damon-Family.org> - 2019-11-01 21:10 -0400
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-02 11:36 +0000
            Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-02 02:15 -0700
            Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-02 13:04 +0100
              Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-02 13:43 +0000
                Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-02 17:24 +0100
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-02 17:00 +0000
                Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-02 13:06 -0700
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-02 21:05 +0000
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-02 22:40 +0000
                Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-02 15:59 -0700
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-02 23:47 +0000
                Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-02 18:22 -0700
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-03 13:27 +0000
                Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-03 17:46 +0100
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-03 17:20 +0000
                Re: memcpy not memcpying? Manfred <noname@add.invalid> - 2019-11-03 19:44 +0100
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-03 19:36 +0000
                Re: memcpy not memcpying? Manfred <noname@add.invalid> - 2019-11-03 22:57 +0100
                Re: memcpy not memcpying? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-03 22:39 +0000
                Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-03 23:06 +0100
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-03 23:28 +0000
                Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-04 11:00 +0100
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-04 11:14 +0000
                Re: memcpy not memcpying? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-04 11:22 +0000
                Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-04 13:10 +0100
                Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-04 10:03 -0800
                Re: memcpy not memcpying? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-04 19:36 +0000
                Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-05 10:04 -0800
                Re: memcpy not memcpying? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-04 20:58 -0800
                Re: memcpy not memcpying? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-04 22:01 -0800
                Re: memcpy not memcpying? Autist <autist69@gmail.com> - 2019-11-04 12:56 +0100
                Re: memcpy not memcpying? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-11-04 09:50 -0500
                Re: memcpy not memcpying? scott@slp53.sl.home (Scott Lurndal) - 2019-11-04 20:26 +0000
                Re: memcpy not memcpying? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-04 04:34 -0800
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-04 13:05 +0000
                Re: memcpy not memcpying? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-04 14:09 +0000
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-04 15:11 +0000
                Re: memcpy not memcpying? Melzzzzz <Melzzzzz@zzzzz.com> - 2019-11-04 15:15 +0000
                Re: memcpy not memcpying? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-04 15:43 +0000
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-03 20:20 +0000
                Re: memcpy not memcpying? Ian Collins <ian-news@hotmail.com> - 2019-11-03 14:37 +1300
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-03 11:01 +0000
                Re: memcpy not memcpying? Öö Tiib <ootiib@hot.ee> - 2019-11-03 04:03 -0800
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-03 12:52 +0000
                Re: memcpy not memcpying? Öö Tiib <ootiib@hot.ee> - 2019-11-03 23:34 -0800
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-04 09:36 +0000
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-04 16:20 +0000
                Re: memcpy not memcpying? Ian Collins <ian-news@hotmail.com> - 2019-11-04 07:46 +1300
                Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-03 12:26 -0800
                Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-03 17:31 +0100
                Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-03 17:05 +0000
              Re: memcpy not memcpying? already5chosen@yahoo.com - 2019-11-03 09:14 -0800
                Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-03 12:32 -0800
                Re: memcpy not memcpying? already5chosen@yahoo.com - 2019-11-03 14:59 -0800
                Re: memcpy not memcpying? already5chosen@yahoo.com - 2019-11-03 15:19 -0800
                Re: memcpy not memcpying? already5chosen@yahoo.com - 2019-11-03 17:00 -0800
          Re: memcpy not memcpying? DFS <nospam@dfs.com> - 2019-11-02 11:16 -0400
            Re: memcpy not memcpying? David Brown <david.brown@hesbynett.no> - 2019-11-02 17:26 +0100
    Re: memcpy not memcpying? Barry Schwarz <schwarzb@delq.com> - 2019-11-01 06:39 -0700
      Re: memcpy not memcpying? DFS <nospam@dfs.com> - 2019-11-01 09:56 -0400
        Re: memcpy not memcpying? Barry Schwarz <schwarzb@delq.com> - 2019-11-01 12:39 -0700
    Re: memcpy not memcpying? guinness.tony@gmail.com - 2019-11-01 06:49 -0700
    Re: memcpy not memcpying? jak <nospam@please.ty> - 2019-11-01 20:40 +0100
  Re: memcpy not memcpying? Autist <autist69@gmail.com> - 2019-11-01 14:26 +0100
    Re: memcpy not memcpying? Keith Thompson <kst-u@mib.org> - 2019-11-01 10:22 -0700
    Re: memcpy not memcpying? Bart <bc@freeuk.com> - 2019-11-01 19:44 +0000
      Re: memcpy not memcpying? Autist <autist69@gmail.com> - 2019-11-01 21:31 +0100
  Re: memcpy not memcpying? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-11-01 09:39 -0400
    Re: memcpy not memcpying? Autist <autist69@gmail.com> - 2019-11-01 14:42 +0100
      Re: memcpy not memcpying? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-11-01 09:48 -0400
  Re: memcpy not memcpying? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-11-01 06:47 -0700
    Re: memcpy not memcpying? Autist <autist69@gmail.com> - 2019-11-01 14:58 +0100
      Re: memcpy not memcpying? DFS <nospam@dfs.com> - 2019-11-01 10:22 -0400
        Re: memcpy not memcpying? Autist <autist69@gmail.com> - 2019-11-01 18:38 +0100
          Re: memcpy not memcpying? scott@slp53.sl.home (Scott Lurndal) - 2019-11-01 17:54 +0000
            Re: memcpy not memcpying? Autist <autist69@gmail.com> - 2019-11-01 20:24 +0100
          Re: memcpy not memcpying? DFS <nospam@dfs.com> - 2019-11-01 15:24 -0400
        Re: memcpy not memcpying? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-01 23:19 +0000

csiph-web