相关疑难解决方法(0)

我应该使用字符串文字来释放char*吗?

我应该char*在使用字符串文字初始化时自由变量吗?对我来说,语法会让我假设它们只是堆栈分配,但这个例子告诉我,它们不是.

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

static char* globalBuffer;

typedef struct Container {
    char* buffer;
} Container;

Container* Container_new(char* buffer) {
    Container* container = malloc(sizeof(Container));
    container->buffer    = buffer;
    globalBuffer         = buffer;
    return container;
}

void Container_print(Container* container) {
    if (container->buffer != NULL) {
        printf("%s", container->buffer);
        printf("\n");
    }
    else {
        printf("Container contains a NULL-buffer.");
    }
}

Container* stage() {
    Container* container = Container_new("Test-string.");
    Container_print(container);
    return container;
}

int main() {
    Container* container = stage();
    Container_print(container);

    free(container);
    Container_print(container); // I know, …
Run Code Online (Sandbox Code Playgroud)

c memory memory-management

20
推荐指数
2
解决办法
9196
查看次数

标签 统计

c ×1

memory ×1

memory-management ×1