Хорошо, в настоящее время я пишу ядро ради своего резюме. Во время написания моего модуля управления памятью я ударил кирпичную стену.Указатели символов и касты из целых чисел (адрес памяти)
int address = (int)malloc(sizeof(Test))
consoleWriteString("Variable Address:\n");
consoleWriteInteger(address);
char* f = (void*)address;
consoleWriteString("\nVariable Address:\n");
consoleWriteInteger((int)&f); // Should print off the same as above
Логически выход должен быть одинаковым для обоих. Где-то что-то пошло не так. поскольку мой вывод следующий.
Variable Address: 47167
Variable Address: 1065908
После длительного периода тестирования и отладки я, наконец, сдался и решил спросить переполнение стека. Также, если вы заметите любые ошибки синтаксиса, игнорируйте их. Кстати, все это на C, и все функции являются обычными, в том числе malloc, но я решил, что ошибка не лежит в этом функционале или в любом другом факте. Я считаю, что это только я, будучи глупым в отношении указателей и кастингов, но не смейся над мной, когда это было нечто сверх простое, что я пропустил.
Благодаря Yall
Назначение указателей на целые числа и блокирование вашего кричащего компилятора с помощью приводов? Это путь к катастрофе. Почему бы не использовать 'void * address' или' char * address'? Если причина в том, что нет 'consoleWritePointer', то напишите один! – Jens
Спасибо за информацию, за консольWritePointer, как я могу ее написать? Просто преобразуйте его в адрес в шестнадцатеричном формате и затем распечатайте оттуда? – robbert229
Если у вас уже есть стандартный printf, соответствующий стандарту C, используйте указатель '% p' для указателей; если нет, введите значение указателя в значение без знака и распечатайте его (или используйте объединение, вставьте в ptr и прочитайте значение без знака). – Jens