Указатель на мою глобальную переменную поворачивается к crud после освобождения локального ресурса, который я использую для установки значения в c.c char указатели памяти и глобальные переменные
это .c класс
char* resource_directory;
void getResourcePath()
{
char *basePath = SDL_GetBasePath();
char* resource_dir = (char*)malloc(37 * sizeof(char));
for(int i = 0; i < 25; i++)
{
resource_dir[i] = basePath[i];
}
strcat(resource_dir, "resources/");
resource_dir[36] = '\0';
*resource_directory = *resource_dir;
free(basePath);
// free(resource_dir); <--- If I free here the value goes to crud
}
(эта линия ниже должна сказать, значение в resresource_directorydir равно значению в resource_dir) правильно?
*resource_directory = *resource_dir;
поэтому значение по адресу первого указателя должно получить значение адреса на 2-е, но после попытки освободить ресурс к концу функции.
Даже делая заявление печати адресов показывает, что у них разные адреса.
SDL_Log("%d, %d", &resource_directory, &resource_dir);
пример вывода : 245387384, 1361037488
я чувствую, что я делаю глупую ошибку здесь, но я не знаю, что это такое.
Не отвергни 'таНос()' 's возвращаемое значение, и не используйте 'SizeOf (Char)', так как он всегда один, и не напечатайте адреса с помощью спецификатора ''% d '', используйте' '% p" '. –
@this (кто удалил комментарий) в этом контексте, используя 'sizeof (* resource_dir)' лучше, так как он выживет с изменением типа, не обращая внимания. –
Это вопрос C++ или C? Если вопрос - C++, ответы могут быть разными. – kfsone