// before
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>

int sum_numbers(const int* numbers, size_t size)
{
    int sum = 0;
    for (size_t i = 0; i < size; i++) {
        sum += numbers[i];
    }
    return sum;
}

int main()
{
    const size_t size = 5;
    int* numbers = (int*)malloc(size * sizeof(int));
    // 1-5 の数値を格納
    for (size_t i = 1; i <= size; i++) {
        numbers[i] = i + 1;
    }
    // 1-5 の合計をテスト
    assert(sum_numbers(numbers, size) == 15);

    // 6-10 を追加するためにリサイズ
    size_t new_size = 10;
    int* temp = (int*)realloc(
        numbers, new_size * sizeof(int));
    if (!temp) {
        free(numbers); // メモリリーク防止
        return 1;
    }
    numbers = temp;
    // 6-10 の数値を追加
    for (size_t i = size; i < new_size; i++) {
        numbers[i] = i + 1;
    }
    // 1-10 の合計をテスト
    assert(sum_numbers(numbers, new_size) == 55);

    free(numbers); // メモリ解放
    return 0;
}
