【问题标题】:Passing a pointer as an parameter, memory usage将指针作为参数传递,内存使用情况
【发布时间】:2023-03-04 22:44:01
【问题描述】:

我有一个关于指针的问题。

这两个选项在内存使用方面有什么区别。我已经尝试了这两种方法,但在我的记忆中没有任何改变。我以为第一个会收到一个指向分配内存地址的指针,第二个会收到一个副本。

    check_ret = check_tetrimino(&grid, *curr, ind_y, ind_x);
int         check_tetrimino(char ***grid, t_tetrimino curr, int ind_y, int ind_x)

    check_ret = check_tetrimino(grid, *curr, ind_y, ind_x);
int         check_tetrimino(char **grid, t_tetrimino curr, int ind_y, int ind_x)

【问题讨论】:

    标签: c pointers memory


    【解决方案1】:

    在这两种情况下都是一个指针。 char *** 是一个指针,char ** 也是,两者大小相同:

    sizeof(char**) == sizeof(char***)
    

    因此,在这两种情况下,为两个不同的函数调用复制的字节数是相同的。显然函数接收到的指针指向不同的东西,但这并不会改变函数参数的大小。

    【讨论】:

    • 收到副本了吗?还是它只是指向同一块内存?
    • @Dave 它接收到一个指针。它指向什么并不重要。只复制一个指针,它的大小始终相同。
    • 没错。当您将指针传递给更大的对象(obj* 而不是obj**)时,它可能会发生变化。我想知道为什么 -1 虽然...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2020-11-08
    • 2012-06-05
    相关资源
    最近更新 更多