Для тех, кто знаком с 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 Мой вопрос заключается в следующем: какая часть […]
Привет, кто-нибудь может помочь мне найти причину проблемы? По какой-то причине функция find_hash дает мне проблемы. Это должно быть сбой if(table -> buckets_array[i] != NULL){ и if(table -> buckets_array[i] != ‘\0’){ но это не так, и это будет следующая проверка, которая дает у меня segmentation fault. Что может привести к тому, что первый оператор 2 […]
Если бы я мог, я бы это исправить, инициализировав копию структуры в основной функции и передав ее другой функции, но мне не разрешено изменять заголовки функций для этого проекта. Поскольку мне дано это для работы, я также уверен, что есть одинаково хорошее решение, которое поможет мне узнать что-то о том, как динамическое распределение памяти может […]
Во время выполнения я получаю сообщение об ошибке отладки. 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 ++. Тем не менее, в области функций, определенных […]
Я пытаюсь отслеживать ошибки после использования в 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 […]
objective Я пишу небольшую библиотеку для более крупного проекта, который предоставляет функции malloc / realloc / free wrapper-функции, а также функцию, которая может рассказать вам, соответствует ли ее параметр (типа void * ) для выделенной (еще не освобожденной) памяти и управляется оберточными функциями библиотеки. Давайте isgood_memory к этой функции как isgood_memory . Внутри библиотека поддерживает […]
При объявлении указателей на 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; }; Количество детей в каждом узле […]