Попытка избавиться от любого выделения памяти в куче ⇐ C++
Попытка избавиться от любого выделения памяти в куче
Я знаю, как это сделать с помощью динамической памяти, но стараюсь избавиться от выделения динамической памяти в своем коде.
Я не могу использовать какую-либо библиотеку, которая могла бы мне помочь, это означает, например: .
Как это сделать с помощью выделения памяти стека?
int main(void) { класс Животное { беззнаковый символ nameLength; имя беззнакового символа[]; setName(имя беззнакового символа[]) { memcpy(this->name, name, this->length * sizeof(unsigned char)); } } Животное-собака; // Значение '4' не является постоянным, оно зависит от полученных данных из сокета собака.имяДлина = 4; // Сейчас я знаю, сколько элементов будет в массиве Dog.name беззнаковый символ случайное имя[dog.nameLength]; // Здесь будет цикл for, но просто для примера: случайное имя[0] = "Б"; случайное имя[1] = "е"; случайное имя[2] = "n"; случайное имя[3] = "/0"; собака.setName(случайноеимя); // Ожидаемый результат: Dog.name = "Ben\0" } Цикл for будет выглядеть так:
беззнаковый символ i; for (i = 0; i < (dog.nameLength-1); i++) { случайное имя = пакет; } случайное имя[я] = 0;
Я знаю, как это сделать с помощью динамической памяти, но стараюсь избавиться от выделения динамической памяти в своем коде.
Я не могу использовать какую-либо библиотеку, которая могла бы мне помочь, это означает, например: .
Как это сделать с помощью выделения памяти стека?
int main(void) { класс Животное { беззнаковый символ nameLength; имя беззнакового символа[]; setName(имя беззнакового символа[]) { memcpy(this->name, name, this->length * sizeof(unsigned char)); } } Животное-собака; // Значение '4' не является постоянным, оно зависит от полученных данных из сокета собака.имяДлина = 4; // Сейчас я знаю, сколько элементов будет в массиве Dog.name беззнаковый символ случайное имя[dog.nameLength]; // Здесь будет цикл for, но просто для примера: случайное имя[0] = "Б"; случайное имя[1] = "е"; случайное имя[2] = "n"; случайное имя[3] = "/0"; собака.setName(случайноеимя); // Ожидаемый результат: Dog.name = "Ben\0" } Цикл for будет выглядеть так:
беззнаковый символ i; for (i = 0; i < (dog.nameLength-1); i++) { случайное имя = пакет; } случайное имя[я] = 0;
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение