I'm not going to comment on your memset implementation, but does this help

int main(){
  char *s; // Creates a pointer to a char
  printf("s contains the address %p\n",s); // Shows the pointer's address
  if(!(s=(char *)malloc(6))) return 0; // Allocates 6 bytes of memory and
                                       // sets s to point at them
  printf("s contains the address %p\n",s);
  strcpy(s,"Hello"); // Copies "Hello" into the 6 bytes of memory
  printf("%s\n",s);
  s="Hello Geeks";   // This does NOT copy anything to the malloced memory.
                     // It sets s to point at "Hello Geeks"
                     // The address of the malloced memory is lost
  printf("s contains the address %p\n",s);
  printf("%s\n",s);
}

thumb_up 3 thumb_down 0 flag 1

puts("");

It would be a lot easier to give an answer, if you provided the problem description and some sample input. However, from a quick look.
1) In newNode, you are not returning anything!
2) In deleteABR, you call supprimerABR, but I can't see the code for that.

thumb_up 0 thumb_down 0 flag 0

I wouldn't do it in C or CPP, because what happens will depend on the compiler you are using. In MS Visual Studio 17 this code

  array[4]=4;
  array[5]=5;
  i=4;
  printf("%d %d\n",array[4],array[5]);
  array[i]=i++;
  printf("%d %d\n",array[4],array[5]);

produces

4 5
4 5

So, yes you can do it, but don't!