Это мой код:Как освободить указатель в структуре?
typedef struct bobTheBuilder{
char *name;
int fix;
int max;
};
int main(void){
struct bobTheBuilder bob;
initBob(&bob);
del(&bob);
system("PAUSE");
return (0);
}
void initBob(struct bobTheBuilder *currBob)
{
char *n="bob";
currBob->name = (char*)malloc(sizeof(char)*strlen(n));
strcpy((*currBob).name, n);
(*currBob).fix = 0;
(*currBob).max = 3;
}
void del(struct bobTheBuilder *currBob)
{
free(currBob->name);
}
Визуальные перерывы студии на free
предложения.
Что мне делать? Является ли проблема с free
или malloc
?
Предоставление функций для освобождения строки в «деструкторе» вашей структуры данных - это плохая идея: что, если кто-то инициализирует 'currBob-> name' строковым литералом или массивом стека' char'? См. [Здесь] (http://stackoverflow.com/questions/28896609/how-to-distinguish-between-strings-in-heap-or-literals) для аналогичного случая. – Mints97
И используйте 'getch()' вместо 'system (" pause ")'. – usr2564301
@ Jongware, почему? –