c - 知道二维动态数组的纵横比大小

c - To know the aspect size of a two-dimensional dynamic array

提问人:Hanyechan 提问时间:6/12/2022 更新时间:6/12/2022 访问量:46

问:

我现在正在用 C 语言实现深度学习。 我想知道使用任何长度创建的二维动态数组的水平和垂直长度。

我的尝试:

    double** a1 = createArray(?, ?);
    size_t a1_size = _msize(*a1)/sizeof(double);

createArray 函数:

double** createArray(int l, int m){
    double **result;

    result = calloc(sizeof(double*), l);
    result[0] = calloc(sizeof(double), l * m);
    for (int i = 1; i < l; ++i) result[i] = result[i - 1] + m;

    return result;
}

我尝试使用_msize函数解决此问题,但失败了。

你能分辨出二维动态阵列的水平和垂直大小吗?你可以帮我吗?

C 卡洛克

评论

3赞 kaylum 6/12/2022
不能仅从指针获取动态分配的内存的大小。您需要通过存储尺寸来自己跟踪它。
1赞 Eric Postpischil 6/12/2022
@kaylum:Re “You cannot get the size of dynamically allocated memory from the pointer alone”:是一个Microsoft扩展,仅从指针获取动态分配的内存大小。(不幸的是,对于 OP,我希望它获得分配的内存量,而不是请求的内存量,尽管文档不清楚。_msize
0赞 chux - Reinstate Monica 6/12/2022
尝试和 .你会得到什么?_msize(a1)/sizeof a1[0]_msize(a1[0])/sizeof a1[0][0]
0赞 Hanyechan 6/12/2022
@chux-恢复莫妮卡哇!这就是我想要的答案,你能解释一下它是如何工作的吗?
0赞 chux - Reinstate Monica 6/12/2022
@Hanyechan返回分配的字节大小(请参阅注释@Eric)。 是被引用对象的字节大小。,希望是对象分配计数。_msize(ptr)sizeof ptr[0]_msize(ptr)/sizeof ptr[0]

答: 暂无答案