如何找到动态数组的大小[重复]

2023-12-04

有什么方法可以找到分配了多少字节RandomArray在这段代码中

#include<stdio.h>
#include<stdlib.h>

    int main()
    {
    int *RandomArray;
    int n;
    srand(time(NULL));

    RandomArray=malloc(sizeof *RandomArray * (rand()%11));
    printf("%d  %d",sizeof(RandomArray),sizeof(*RandomArray));

    return 0;
    }

我也不知道上面的代码是否会有任何实际用途。但我是从编程的角度来看的。


是的,通过将大小保存在变量中:

int main()
{
    int *RandomArray;
    int n;
    srand(time(NULL));

    size_t size = rand() % 11;
    if(size == 0)
    {
        fprintf(stderr, "Size 0, no point in allocating memory\n");
        return 1;
    }

    RandomArray = malloc(size * sizeof *RandomArray)
    if(RandomArray == NULL)
    {
        fprintf(stderr, "no memory left\n");
        return 1;
    }
    printf("%zu  %zu\n", sizeof(RandomArray), size);

    // don't forget to free the memory
    free(RandomArray);

    return 0;
}

注意sizeof(RandomArray)返回指针指向的大小int需要存储在内存中,并且sizeof(*RandomArray)返回您的大小 一个int.

另外不要忘记释放内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到动态数组的大小[重复] 的相关文章

随机推荐