Можете ли вы определить, является ли строка свободной в C? [Дубликат]

На этот вопрос уже есть ответ:

Проверьте, если указатель указывает на выделенную память в куче 10 ответов

Если я скажу

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

char *x;
char *y;

int main() {
        x = malloc(sizeof("Hello, world!"));
        strcpy(x, "Hello world!");
        y = "Hello, world";
        free(x);
        fprintf(stderr, "okay");
        free(y);
}

Затем, очевидно, программа выведет «хорошо», после чего произойдет смерть, потому что «освобождаемый указатель не был выделен» - очевидно, потому что строка была строковым литералом.

Я хотел бы написать функцию, которая ничего не делает при задании строковых литералов, но вызывает free при задании нестроковых литералов. Возможно ли это, и если да, то ка

Ответы на вопрос(5)

Ваш ответ на вопрос