Need help creating a dynamic char array in C
arrays, c
Solution
This line `arr = (char*)malloc (2 * sizeof (char));` will allocate memory for 2 bytes only. But you are overwriting the memory by accessing the more 8 or more than 8 byes. If you access more than two byes means, it will give some unpredictable issue. In case you want more memory please follow the below code.
#define USER_SIZE 10
arr = (char*)malloc ( USER_SIZE * sizeof (char));
Assign the value in `USER_SIZE` macro and then allocate the memory as much as you want.
Example for 2D pointer ( 5 X 10 )
#define ROW 5
#define COLUMN 10
main()
{
unsigned char **p = NULL, colum = 0;
p = malloc ( ROW * sizeof ( unsigned char *) );
for (;colum< ROW; ++colum )
{
p[colum] = malloc (COLUMN * sizeof (unsigned char ));
}
}
Problem
I'm having trouble creating a dynamic char array. This is what I have so far. ``` char * arr; arr = (char*)malloc (2 * sizeof (char)); ``` It's not allocating space for only 2 characters, it's letting me enter up to arr[8] and then giving me strange errors after 8. I also tried making a 2 dimensional char array. The first dimension allocates correctly, but then the second dimension has more space than I allow it to have and gets an error at around 12 characters or so. Any help would be greatly appreciated. I would prefer to make a 1 dimensional dynamic array if possible.