Я пытаюсь настроить некоторые общие функции в C++, чтобы распределять память динамически, и это то, что я получил до сих пор:
char* init_char(uint64_t A, const char* init){
char* ptr = new char[A];
memset(ptr, '\0', A*sizeof(char));
if(init != NULL)
strcpy(ptr, init);
return ptr;
}
char** init_char(uint64_t A, uint64_t B, const char* init){
char** ptr = new char*[A];
for(uint64_t a = 0; a < A; a++)
ptr[a] = init_char(B, init);
return ptr;
}
Идея состоит в том, что вы просто передаете размеры (A, B) и строку инициализации (init) и возвращаете массив со всей выделенной памятью. Однако, хотя первый, похоже, работает правильно, второй возвращает указатель NULL.
Я огляделся, но ничего хорошего. Фактически в некоторых других сообщениях (функция для распределения динамической памяти) они, похоже, делают что-то совершенно похожее. Я что-то упустил?
благодаря,
ваша ошибка не должна использовать c++.
ваша проблема может быть уменьшена до:
std::string initStr("initialitation string");
int a = 10;
std::vector<std::string> myStringArray(a, initStr);
std::string
? Где находитсяstd::vector
?new
и / или (предпочтительно) умными указателями, такими какstd::shared_ptr
?