   // Assignment operator
   String& operator=(const char* s) {
     _realloc(strlen(s));
-    memcpy(data, s, length);
+    strcpy(data, s);
     return *this;
   }
 


__global__ 
void Kernel_by_ref(DataElement &elem) {
  printf("On device:                  name=%s, value=%d\n", elem.name.c_str(), elem.value);

  elem.name[0] = 'r';
  elem.value++;


__global__ 
void Kernel_by_value(DataElement elem) {
  printf("On device by value:         name=%s, value=%d\n", elem.name.c_str(), elem.value);

  elem.name[0] = 'v';
  elem.value++;
