Articles of указателем

C Указатель и распределение памяти: массивы Realloc и передача указателя

Для тех, кто знаком с C, это будет простая проблема с распределением памяти / ссылкой: Вот мои структуры данных: struct configsection { char *name; unsigned int numopts; configoption *options; }; typedef struct configsection configsection; struct configfile { unsigned int numsections; configsection *sections; }; typedef struct configfile configfile; Вот мои подпрограммы для инициализации configsection или configfile […]

Почему я могу получить доступ к члену структуры после того, как указатель на него освобожден?

Если я определяю структуру … struct LinkNode { int node_val; struct LinkNode *next_node; }; а затем создать указатель на него … struct LinkNode *mynode = malloc(sizeof(struct LinkNode)); … и затем, наконец, бесплатно () это … free(mynode); … Я все еще могу получить доступ к элементу ‘next_node’ структуры. mynode->next_node Мой вопрос заключается в следующем: какая часть […]

Почему это передаёт утверждение if?

Привет, кто-нибудь может помочь мне найти причину проблемы? По какой-то причине функция find_hash дает мне проблемы. Это должно быть сбой if(table -> buckets_array[i] != NULL){ и if(table -> buckets_array[i] != ‘\0’){ но это не так, и это будет следующая проверка, которая дает у меня segmentation fault. Что может привести к тому, что первый оператор 2 […]

Как получить доступ к структуре данных, созданной в одной функции, в другой функции, не возвращая ее или не передавая ее?

Если бы я мог, я бы это исправить, инициализировав копию структуры в основной функции и передав ее другой функции, но мне не разрешено изменять заголовки функций для этого проекта. Поскольку мне дано это для работы, я также уверен, что есть одинаково хорошее решение, которое поможет мне узнать что-то о том, как динамическое распределение памяти может […]

Повреждение кучи – ошибка отладки не удалась. в выражении dbgheap.c 1322 выражение _crtIsValidHeapPointer (pUserData)

Во время выполнения я получаю сообщение об ошибке отладки. in dbgheap.c line 1322 expression _crtIsValidHeapPointer(pUserData) Если я запускаю в отладчике, я получаю точку останова, показанную ниже. Как я могу исправить эту ошибку распределения / де-распределения? У меня есть 2 функции в файле заголовка: struct union_find_t; struct union_find_t* union_find_init(int n); void union_find_free(struct union_find_t* uf); и в […]

Выполняют ли следующие инструкции присвоение указателю физического или виртуального адреса?

От https://stackoverflow.com/a/2761494/156458 ни C, ни C ++ не предоставляют строго определенную функцию, которая позволяла бы назначать конкретный физический адрес указателю. Таким образом, ваш вопрос о том, «как назначить 0-й адрес указателю», формально не имеет ответа. Вы просто не можете назначить конкретный адрес указателю на C / C ++. Тем не менее, в области функций, определенных […]

Новый указатель (по malloc) такой же, как один из освобожденных / старых указателей

Я пытаюсь отслеживать ошибки после использования в C. И мой вопрос в том, что если у меня есть такой код: A * ptrA = malloc(sizeof(A)); A * aliasA = ptrA; // do something ‘ free(ptrA) // some other code B * ptrB = malloc(sizeof(B)); // assume this return same pointer as ptrA //trying to use […]

Какие проблемы с переносимостью связаны с доступом на уровне байтов к указателям в C?

objective Я пишу небольшую библиотеку для более крупного проекта, который предоставляет функции malloc / realloc / free wrapper-функции, а также функцию, которая может рассказать вам, соответствует ли ее параметр (типа void * ) для выделенной (еще не освобожденной) памяти и управляется оберточными функциями библиотеки. Давайте isgood_memory к этой функции как isgood_memory . Внутри библиотека поддерживает […]

Есть ли соглашение для объявлений указателей в C?

При объявлении указателей на C существует 2 (edit: 3) варианта: Вариант A: int* ptr; Вариант B: int *ptr; Вариант C: int * ptr; В A к типу добавлен оператор косвенности. В B оператор косвенности был добавлен к переменной. В C оператор косвенности свободно находится между типом и переменной. Способ объявления указателя различается в зависимости от […]

Дерево с несколькими дочерними узлами и следующим узлом

Я хочу построить дерево со следующими характеристиками: Каждый узел может иметь 1 «следующий узел». Каждый узел может иметь несколько дочерних узлов. Количество дочерних узлов может варьироваться от одного узла к другому Я думал о структуре, которая выглядела так: struct tree { int value; struct tree* nextnode; struct tree** childnode; }; Количество детей в каждом узле […]