Можете ли вы определить, является ли строка свободной в 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 при задании нестроковых литералов. Возможно ли это, и если да, то ка