当前位置:  开发笔记 > 编程语言 > 正文

带有指针的int矩阵C - 内存分配混乱

如何解决《带有指针的int矩阵C-内存分配混乱》经验,为你挑选了1个好方法。



1> Graeme Perro..:

仅仅因为内存已经免费并不意味着你无法访问它!当然,在它被免费后访问它是一个非常糟糕的主意,但这就是为什么它在你的例子中起作用的原因.

请注意,free( *first_matrix )只有free first_matrix[0],而不是其他数组.你可能想要某种标记来表示最后一个数组(除非你总是知道你何时释放外部数组你分配了多少个内部数组).就像是:

int** read_matrix(int size_x, int size_y)
{
    int** matrix;
    matrix = calloc(size_x, 1+sizeof(int*)); // alloc one extra ptr
    for(int i = 0;i

那么当你解放它们时:

// keep looping until you find the NULL one
for( int i=0; first_matrix[i] != NULL; i++ ) {
    free( first_matrix[i] );
}
free( first_matrix );

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有