C++ teplate class. Пoмогите! Почему вылетает segfault при попытке запихнуть std::string?
array[0] = elem;
это означает вызов
array[0].operator=(elem);
в функции "string::operator=()" и падает, т. к. в array[0] находится мусор, потому что для него (для array[0]) конструктор не вызывался
Вместо
array = (Type*) malloc(100);
возможно имелось ввиду
array = new Type[100];
а место free, тогда delete[]array
1) string это объект,  он занимает в памяти больше,  чем вы предполагаете
2) прочитайте про временные объекты