相关疑难解决方法(0)

131
推荐指数
4
解决办法
12万
查看次数

为什么malloc在gcc中将值初始化为0?

也许从平台到平台不同,但是

当我使用gcc编译并运行下面的代码时,我每次都在ubuntu 11.10中得到0.

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

int main()
{
    double *a = (double*) malloc(sizeof(double)*100)
    printf("%f", *a);
}
Run Code Online (Sandbox Code Playgroud)

为什么malloc表现得像这样,即使有calloc?

是不是意味着只是将值初始化为0会产生不必要的性能开销,即使您有时不想要它也是如此?


编辑:哦,我之前的例子不是initiazling,但碰巧使用"新鲜"块.

我正在寻找的是为什么它在分配一个大块时初始化它:

int main()
{
    int *a = (int*) malloc(sizeof(int)*200000);
    a[10] = 3;
    printf("%d", *(a+10));

    free(a);

    a = (double*) malloc(sizeof(double)*200000);
    printf("%d", *(a+10));
}

OUTPUT: 3
        0 (initialized)
Run Code Online (Sandbox Code Playgroud)

但感谢您指出在进行mallocing时存在安全原因!(没想过).当分配新块或大块时,它必须初始化为零.

c linux malloc gcc

76
推荐指数
4
解决办法
4万
查看次数

如何在python中创建修复大小列表?

在C++中,我可以创建一个像...一样的数组

int* a = new int[10];
Run Code Online (Sandbox Code Playgroud)

在python中,我只知道我可以声明一个列表,而不是追加一些项目,或者像...

l = [1,2,3,4]
l = range(10)
Run Code Online (Sandbox Code Playgroud)

我可以按照给定的大小初始化列表,比如c ++,不做任何分配吗?

python list

46
推荐指数
4
解决办法
8万
查看次数

标签 统计

c ×2

declaration ×1

gcc ×1

initialization ×1

linux ×1

list ×1

malloc ×1

python ×1