Today I was told that I would be able to easily take the contents of a static array and copy the data over to the dynamically allocated one. I searched for a long while and still have not found a good explanation as to how and why that is possible. For example, if I have code as follows,
int i = 0;
char array[64];
for (; i < 64; ++i)
{
array[i] = "a";
}
char* dynamicArray = (char*) malloc (sizeof (char*) * strlen (array));
I was told that I could take the contents of array, which in this case is an array of a's, and copy that data to my dynamic array. I am still confused as to how I can even do that, since functions like memcpy and strcpy have not been working with the static array. Is this copying situation possible? Thank you for the help, and I hope my explanation was okay.
Your code has a few issues:
array[i] = "a";
tries to assign a string (an array of characters) to a single char
. You should use 'a'
to define a single character.
char* dynamicArray = (char*) malloc (sizeof (char*) * strlen (array));
allocates memory but doesn't assign it. strlen(array)
is also unsafe; strlen
counts the number of characters until a nul terminator but array
doesn't have one.
Your code should look something like
int i = 0;
char array[64];
for (; i < 63; ++i) {
array[i] = 'a';
}
array[63] = '\0';
char* dynamicArray = malloc (strlen(array)+1); // +1 for nul terminator
strcpy(dynamicArray, array); // copy contents of array into dynamicArray
// use array
free(dynamicArray); // must have exactly one call to free for each call to malloc