У меня возникла проблема с пониманием концепции распределения динамической памяти, у меня есть код, который сталкивается с segfault, возможно, у кого-то может быть некоторое понимание?динамические строки в структуре
#include <stdio.h>
#include <stdlib.h>
typedef struct tName
{
char **stringA;
int capacity;
} tName;
tName *createTName(int length);
tName *destroyTName(tName *l);
int main(void) {
tName *ll = createTName(10);
}
tName *createTName(int length) {
tName *temp;
int i;
temp->capacity = length;
temp->stringA= (char**) malloc(sizeof(char*) * length);
for(i=0;i<length;i++)
temp->stringA[i] = (char*) malloc(sizeof(char)*50);
return temp;
}
Когда я звоню в эту программу, я получаю segfault, может ли кто-нибудь помочь мне, пожалуйста?
FYI: Не выдавайте результат 'malloc'. – Barmar
@ Бармар: Почему бы и нет? В C++ вы даже вынуждены использовать возвращаемое значение. Я думаю, что нет проблем с кастингом. – maja
maja: http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc – hivert