是否可以将所有零分配给128位的所有位?

Fak*_*een 0 c

int main()
{
    int* p= (int*)malloc(8);

    for(i=0;i<128;i++)
    p=0;

}
Run Code Online (Sandbox Code Playgroud)

我想为所有128位分配所有零.以上代码是否正确?我想澄清一下.我的目标是将128位分配给一个变量并将所有零分配给所有128位.

小智 5

不.您只需将0分配给指针本身(这样就会丢失它并泄漏内存).用这个:

(编辑:正如Jim Balter指出的那样,处理非8位字符很容易:)

int main()
{
    unsigned n = (128 + CHAR_BIT - 1) / CHAR_BIT;
    unsigned char *p = malloc(n);

    for(i = 0; i < n; i++)
    p[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)

但这是重新发明轮子.为什么不使用标准功能memset()

int main()
{
    unsigned n = (128 + CHAR_BIT - 1) / CHAR_BIT;
    unsigned char *p = malloc(n);

    memset(p, 0, n);
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么要忘记你是否可以使用calloc? (6认同)
  • @Motti这是不正确的; 标准确实说char是一个字节. (2认同)