Но Вы посмотрели на свою память из последнего примера MemoryExplorer'ом? Красиво?
Не, ещё не успел, у меня всё дома. Но примерно понял, а исправление моего кода возвращает к мысли, что размер массива всё-таки должен быть заранее определён. И проще зарезервировать больше памяти для одного массива.
uint8_t * arrRemake(uint8_t newArr[], uint8_t arr[], uint8_t &lenArr) {
for (uint8_t i=0; i < lenArr; i++) newArr[i] = arr[i];
delete[] arr; arr = nullptr;
newArr[lenArr] = 5;
lenArr = lenArr + 1;
return newArr;
}
void setup() {
Serial.begin(9600);
uint8_t lenArr = 5;
uint8_t* newArr = new uint8_t[lenArr+1];
uint8_t* arrIn = new uint8_t[lenArr];
for (uint8_t i = 0; i < lenArr; i++) arrIn[i] = i;
Serial.print("arrIn= ");
for (uint8_t i; i < lenArr; i++) {
Serial.print(arrIn[i]);
Serial.print(" ");
}
Serial.println();
uint8_t* arrOut = arrRemake(arrIn, lenArr);
Serial.print("arrOut= ");
for (uint8_t i; i < lenArr; i++) {
Serial.print(arrOut[i]);
Serial.print(" ");
}
Serial.println();
delete[] arrOut; arrOut = nullptr;
}
void loop() {}
Но Вы посмотрели на свою память из последнего примера MemoryExplorer'ом? Красиво?
Но Вы посмотрели на свою память из последнего примера MemoryExplorer'ом? Красиво?
Не, ещё не успел, у меня всё дома. Но примерно понял, а исправление моего кода возвращает к мысли, что размер массива всё-таки должен быть заранее определён. И проще зарезервировать больше памяти для одного массива.
что-то какая-то жуть в коде... зачем это все?
Ну и явная ошибка - arrRemake описана с тремя параметрами, а вызывается с двумя
что-то какая-то жуть в коде... зачем это все?
Ну и явная ошибка - arrRemake описана с тремя параметрами, а вызывается с двумя
Уже незачем - пример избыточного кода. )
arrRemake - да, ошибся, не компилировал.