相关疑难解决方法(0)

malloc(0)中有什么意义?

刚看到这段代码:

artist = (char *) malloc(0);
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会这样做?

c malloc

115
推荐指数
5
解决办法
6万
查看次数

我可以使用比使用malloc()分配的内存更多的内存,为什么?

char *cp = (char *) malloc(1);
strcpy(cp, "123456789");
puts(cp);
Run Code Online (Sandbox Code Playgroud)

gcc(Linux)和Visual C++ Express上的输出是"123456789",这是否意味着当有空闲内存时,我实际上可以使用比我分配的内容更多的内容malloc()

为什么malloc(0)不导致运行时错误?

谢谢.

c

34
推荐指数
3
解决办法
7422
查看次数

如何在C中区分int数组中的empty和0?

我是C的初学者,现在我正在学习指针和动态内存分配.我想编写一个简单的程序来创建空数组并检查给定数字是否存在.这是我的代码:

/* create an empty array pointer */
int* createArray(){
    int *a = (int*) malloc(sizeof(int));
    return a;
}

void findArrayElement(int *list, int element){

    int i;
    int len = (sizeof(list) / sizeof(int));
    if (sizeof(list) == 0) {
        printf("NO\n");
        return;
    }
    for (i=0; i<len; i++) {
        if (list[i] == element) {
            printf("YES\n");
            return;
        }
    }

    printf("NO\n");
}

int main(int argc, const char * argv[]) {

    int *p;
    p = createArray();

    printf("size of int is: %lu\n", sizeof(int));
    printf("size of p is: %lu\n", sizeof(p)); …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers

2
推荐指数
1
解决办法
1855
查看次数

malloc 中的分配大小为零会导致内存位置冲突吗?

所以从问题的解释来看malloc(0)。我发现返回非空值时分配的内存块大小为零的概念是违反直觉的。(从这里结束)

\n

由于两个 malloc 地址不能相同,因此返回的分配应该至少占用一个字节,以保证未来调用的返回值不会mallocmalloc(0)当前进程生命周期中的任何地址发生冲突。

\n

或者,这意味着两个 malloc\xe2\x80\x94(其中一个为 0,另一个没有 \xe2\x80\x94)将在这种情况下返回相同的基地址,这是冲突的,因为两个不同大小的内存位置是不可能的。

\n

c malloc libc

1
推荐指数
1
解决办法
121
查看次数

标签 统计

c ×4

malloc ×2

arrays ×1

libc ×1

pointers ×1