复制指针值

时间:2015-03-08 19:56:11

标签: c pointers multidimensional-array dynamic-arrays

这里有点疑问。我有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。 感谢。

1 个答案:

答案 0 :(得分:0)

不,m1 = m2只会使m1指向与m2相同的内存。它不会复制数组。

然后当你释放m1m2指向的内存时,两个指针都将失效。

Btw free(m2)仅解除int*数组的释放。您还需要在int中解除分配m2数组:

for(int i=0; i<5; i++)   
    free(m2[i]);
free(m2);