Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
462 views
in Technique[技术] by (71.8m points)

c - dynamic memory for 2D char array

I have declared an array char **arr; How to initialize the memory for the 2D char array.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

One way is to do the following:

char **arr = (char**) calloc(num_elements, sizeof(char*));

for ( i = 0; i < num_elements; i++ )
{
    arr[i] = (char*) calloc(num_elements_sub, sizeof(char));
}

It's fairly clear what's happening here - firstly, you are initialising an array of pointers, then for each pointer in this array you are allocating an array of characters.

You could wrap this up in a function. You'll need to free() them too, after usage, like this:

for ( i = 0; i < num_elements; i++ )
{
    free(arr[i]);
}

free(arr);

I think this the easiest way to do things and matches what you need.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...