Давайте рассмотрим следующий фрагмент кода C, который используется для копирования строки неопределенной длины в структуру:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef struct nNameStruct{
char* nName;
//char* nName2;
} nNameStruct;
nNameStruct * NameCreate(char *buffer) {
nNameStruct *pNew;
pNew = (nNameStruct*) malloc(sizeof(nNameStruct*));
pNew->nName = (char*) malloc((strlen(buffer)+1)*sizeof(char*));
strcpy(pNew->nName,buffer);
//pNew->nName2 = (char*) malloc((strlen(buffer)+1)*sizeof(char*));
//strcpy(pNew->nName2,buffer);
return pNew;
}
int main() {
nNameStruct *newName;
char buffer[]="Trial string";
newName=NameCreate(buffer);
printf("%s\n",newName->nName);
//printf("%s\n",newName->nName2);
free(newName->nName);
//free(newName->nName2);
free(newName);
return 0;
}
Эта программа работает довольно хорошо. Однако, если я хочу выделить еще одну строку (используя закомментированные строки), у меня возникают проблемы с утечкой памяти, а проверка valgrind полна ошибок. В чем здесь проблема?