You should allocate an array of char
s, like so:
char *CopyOf(const char *str)
{
char *copy = new char[strlen(str) + 1];
strcpy(copy, str);
return copy;
}
Note that I used brackets, not parentheses. What you were doing with parentheses was initializing a single new char
with the value strlen(str) + 1
. Then you overran the 1-byte buffer with the call to strcpy
. You should strongly consider using std::string
; it will save you from a lot of this C heartache.
Also, to get your code to compile, you must add #include <cstring>
. Finally, main()
should have return type of int
.
1
solved Error in dynamic allocation in C++ [closed]