这里有点疑问。我有2指针指针.. ** m1,** m2和m2初始化为: -
m2 =( int **) calloc( 5, sizeof( int *));
for(int i=0; i<5; i++)
m2[i] = (int *)calloc( 8, sizeof(int));
指针有值..就像2d数组..在每个位置。
我可以这样做 -m1 = m2;
free(m2); // then use m1 as m2 ??
真的很抱歉,如果这是一个简单的问题..请问有什么方法可以将m2复制到m1和免费m2。 感谢。
答案 0 :(得分:0)
不,m1 = m2
只会使m1
指向与m2
相同的内存。它不会复制数组。
然后当你释放m1
和m2
指向的内存时,两个指针都将失效。
Btw free(m2)
仅解除int*
数组的释放。您还需要在int
中解除分配m2
数组:
for(int i=0; i<5; i++)
free(m2[i]);
free(m2);