I created this simple class:

```
class stringa
{
public:
  char *Str;
  stringa(const char *Value);
};

```

My idea was that you would create an object to the class Stringa and use this object as something like a string. 

I defined the constructor as the following:

```
stringa::stringa(const char *Value)
{
  Str = new char;
  int i = 0;
  for(i = 0; Value[i] != '\0';i++)
  {
    Str[i] = Value[i];
    Str[i+1] = '\0';

  }
  return;
}

```

Everything worked fine. I could call: stringa S1 = "HelloPutAnythingHere"; and it would work, the problem came when i created more than 1 object to this class.

i realized that if the first object, S1, had more than 12 characters, and i created another object S2, the ending characters of S1 wouldnt appear. 

So if i had this: 

```
stringa S1 = "abcdefghijklmnopqrstuvwxyz0123456789";
stringa S2 = "br";

cout << S1.Str << endl << S2.Str;

```

would only show: 
*abcdefghijkl* and *br*, as if the rest of S1 had been completely destroyed. 

I supposed that S2 was being created in the middle of S1. Some code i added confirmed this. 

The First character of S1 ('a') was being created at Address *0x8663008*, and the last one ('\0') was being created at Address *0x866302c*. While the first character of s2 ('b') was being created at *0x8663018*, the position which should contain the letter 'q' from the S1.

So my question is the following: **How can i avoid the superposition of character arrays without a constant size? Is it impossible the way im approaching this?**

I know i could be using the string library, but that would go against the purpose of me writing this code.