Функции для динамического выделения памяти в C ++

0

Я пытаюсь настроить некоторые общие функции в 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.

Я огляделся, но ничего хорошего. Фактически в некоторых других сообщениях (функция для распределения динамической памяти) они, похоже, делают что-то совершенно похожее. Я что-то упустил?

благодаря,

  • 2
    Вы уверены, что программируете на C ++? Где находится std::string ? Где находится std::vector ?
  • 0
    Что не так с new и / или (предпочтительно) умными указателями, такими как std::shared_ptr ?
Показать ещё 6 комментариев
Теги:
dynamic-memory-allocation

1 ответ

4

ваша ошибка не должна использовать c++.

ваша проблема может быть уменьшена до:

std::string initStr("initialitation string");
int a = 10;

std::vector<std::string> myStringArray(a, initStr);
  • 0
    И здесь мы снова идем с векторами. Векторы не являются массивами. Попробуйте вставить 1 миллиард элементов в вектор (при начальных знаниях вам нужно будет добавить более 1 миллиарда элементов). Удачи в эффективном времени.
  • 0
    Сараф, как это будет менее эффективно, чем использование вектора?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню