One common problem that I have noticed is that people copy char* pointers thinking that the pointers will be valid when used but this is rarely the case. See the example below.
//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy
//Example demonstrates allocation of memory for char*
#include<iostream>
using namespace std;
typedef struct {
char const * name;
} TypeInfo;
TypeInfo* MakeType(const char *typeName)
{
TypeInfo* newNamedTypeInfo = new TypeInfo;
char* newTypeName = new char[strlen(typeName) + 1];
strcpy(newTypeName, typeName);
newNamedTypeInfo->name = newTypeName;
return newNamedTypeInfo;
}
int main()
{
TypeInfo* testType = MakeType("Apple Banana");
cout << "testType->name = " << testType->name << endl;
return 0;
}
Please suggest any improvements.
The output is as follows:
Note that there is a memory leak in the program if you can spot it and fix it then you are already half way through :)