【发布时间】:2021-10-10 17:24:36
【问题描述】:
我有一个 C 程序,将一个数组分成两个 sub_arrays ,它完美地给出了偶数和奇数 array.length 的结果,但我有这个错误:
*** stack smashing detected ***: <unknown> terminated
Aborted (core dumped)
这是 C 代码:
#include <stdio.h>
#define N 7
int arr[N] = {1, 2, 3, 4, 5, 6, 7};
void print(int *array, int start , int finish)
{
for(int i = start ; i < finish ; i++)
{
printf("%d ", array[i]);
if(i == finish - 1)
printf("\n");
}
}
void init(int *array, int start, int finish)
{
for(int i = start ; i < finish ; i++)
array[i] = arr[i];
}
int main()
{
int left[N/2];
int right[N/2];
init(left,0,N/2);
init(right,N/2,N);
print(left,0,N/2);
print(right,N/2,N);
return 0;
}
【问题讨论】:
-
不错。为
N选择一个奇数值,然后在任何地方使用N/2。
标签: arrays c for-loop function-definition stack-smash