相关疑难解决方法(0)

malloc需要sizeof运算符吗?

在这个程序(C,而不是C++)中,为什么无论使用sizeof运算符,malloc总是返回正确的大小?

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

int main(void) {
    char *c = malloc(3);
    short *s = malloc(3); /* or malloc(3 * sizeof(short))? */
    int *i = malloc(3);   /* or malloc(3 * sizeof(int))? */
    long *l = malloc(3);  /* or malloc(3 * sizeof(long))? */

    printf("%p\n", c++);
    printf("%p\n", c++);
    printf("%p\n", c++);

    printf("---\n");

    printf("%p\n", s++);
    printf("%p\n", s++);
    printf("%p\n", s++);

    printf("---\n");

    printf("%p\n", i++);
    printf("%p\n", i++);
    printf("%p\n", i++);

    printf("---\n");

    printf("%p\n", l++);
    printf("%p\n", l++);
    printf("%p\n", l++);

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

输出是:

0x1e82010 (1 byte)
0x1e82011
0x1e82012 …
Run Code Online (Sandbox Code Playgroud)

c

5
推荐指数
3
解决办法
291
查看次数

标签 统计

c ×1