-1
У меня есть 2 структуры в моем C-коде. Я хочу написать хеш-функцию с этими двумя структурами. Поэтому я хочу инициализировать мои данные null в первом случае. Мой кодКак выделить память для структуры внутри другой структуры?
struct HashNode
{
char username[20];
char password[20];
};
struct HashTable
{
int size;
struct HashNode *table;
};
HashTable *initializeTable(int size)
{
HashTable *htable;
if (size < MIN_TABLE_SIZE)
{
printf("Table Size Small\n");
return NULL;
}
htable = (HashTable *)malloc(sizeof(Hashtable));
if (htable == NULL)
{
printf("memory allocation pblm\n");
return NULL;
}
htable->size = size;
}
Как я могу выделить память для htable->table
с таким размером? У меня есть код на C++, например htable->table = new HashNode [htable->size];
. Как я могу написать это на C с помощью malloc
?
'таНос (размер * SizeOf * (htable-> таблица))' кажется хорошей ставкой. И если это C, остановите «malloc» (https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc). – WhozCraig
У меня есть одно сомнение. Является ли память автоматически распределенной для «struct HashNode», когда я вызываю htable = (HashTable *) malloc (sizeof (Hashtable)); ?? потому что указатель внутри этой структуры. – user39320
@ пользователь39320, no. –