У меня есть следующее
typedef struct
{
int titleCount;
char** titles;
} myStruct;
А потом
...
struct1->titleCount = 2;
struct1->titles = (char**) malloc(sizeof(char *) * (str->titleCount + 1));
...
Какой был бы правильный синтаксис для использования new
вместо malloc
?
в этом примере заголовки указывают на массив указателей на символ или, скорее всего, на строки. Поэтому я бы ожидал чего-то вроде:
titles = new char*[str->titleCount]; // or maybe keep the +1
а затем цикл, чтобы выделить отдельные строки и поместить в них указатели в массив, на который указывают заголовки.
titles
2 строки, даже не указав размер в []
. Почему так?
Если вы портируете с C на C++, лучшим решением будет:
std::vector<std::string> myTitles;
Вся структура не нужна.
Прежде всего, ваш код выделения памяти неверен, потому что вы не можете писать
struct1->titleCount
если только вы не написали
struct struct1 *struct1 = malloc( sizeof( struct struct1 ) );
Однако из представленного вами кода кажется, что вам нужно выделить
str->titleCount + 1
элементы типа char *
Соответственно, соответствующий код будет выглядеть так:
str->titleCount = 2;
str->titles = new char * [str->titleCount + 1];
В следующий раз, пожалуйста, покажите фрагмент кода, который можно скомпилировать. Из вашего кода неясно, что такое struct1 и str. Вы только путаете других.
std::vector<std::string> titles;
и тогда вы все в порядке.