相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果malloc,即

int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

而不是:

int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

如何找到'sizeof'(指向数组的指针)?

首先,这里是一些代码:

int main() 
{
    int days[] = {1,2,3,4,5};
    int *ptr = days;
    printf("%u\n", sizeof(days));
    printf("%u\n", sizeof(ptr));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法找出ptr指向的数组的大小(而不是仅仅给出它的大小,在32位系统上是4个字节)?

c arrays pointers sizeof

288
推荐指数
8
解决办法
35万
查看次数

C,Malloc()和数组长度

可能重复:
如何查找sizeof(指向数组的指针)

我正在学习如何在C中创建动态数组,但遇到了一个我无法弄清楚的问题.

如果我使用代码:

int num[10];
for (int i = 0; i < 10; i++) {
    num[i] = i;
}
printf("sizeof num = %li\n sizeof num[0] = %li", sizeof(num), sizeof(num[0]));
Run Code Online (Sandbox Code Playgroud)

我得到输出:

sizeof num = 40
sizeof num[0] = 4
Run Code Online (Sandbox Code Playgroud)

这就是我期望发生的事情.但是,如果我malloc数组的大小如下:

int *num;
num = malloc(10 * sizeof(int));
for (int i = 0; i < 10; i++) {
    num[i] = i;
}
printf("sizeof num = %li\n sizeof num[0] = %li", sizeof(num), sizeof(num[0]));
Run Code Online (Sandbox Code Playgroud)

然后我得到输出:

sizeof num = 8
sizeof num[0] = 4 …
Run Code Online (Sandbox Code Playgroud)

c arrays malloc

16
推荐指数
2
解决办法
8万
查看次数

标签 统计

c ×3

arrays ×2

malloc ×2

casting ×1

pointers ×1

sizeof ×1