【发布时间】:2019-04-18 17:10:03
【问题描述】:
我的 Visual Studio 总是出现不同的异常。(Bubble sort.exe 已触发断点。) 有时在第 6 行 :(arr_2 = (int *)malloc(size); 有时在 free (arr) 和 free(arr_2) 的行上;
int bubble(int size, int * arr) {
for (int i = 0; i < size; i++) {
printf("array[%d] = %d \n", i, arr[i]);
}
int * arr_2;
arr_2 = (int *)malloc(size);
for (int i = 0; i < size; i++) {
arr_2[i] = arr[i];
}
for (int i = 0; i < size; i++) {
printf("2array_2[%d] = %d \n", i, arr_2[i]);
}
int numb;
for (int i = 0; i < size; i++) {
if (arr[i] > arr[i + 1]) {
numb = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = numb;
}
}
free(arr_2);
return 0;
};
int main(){
char size[100];
printf("Hello! Please enter the size of the array that will be sorted with
bubble sort method \n Maximum size is 100 \n");
gets_s(size);
int size_1 = atoi(size);
int * arr;
arr = (int *)malloc(size_1);
for (int i = 0; i < size_1; i++) {
arr[i] = rand();
}
bubble(size_1, arr);
free(arr);
return 0;
}
【问题讨论】:
-
欢迎来到 StackOverflow!请编辑您的标题以更好地描述您的问题。您还不需要列出语言(它被标签覆盖),也不需要全部大写。编辑代码以修复缩进也会对读者有所帮助。
-
这要么是 c,要么是 c++ 努力看起来像 c。你为什么使用
malloc和free? -
我认为您需要阅读此ericlippert.com/2014/03/05/how-to-debug-small-programs 当您在其中放置断点时,malloc 的错误将很容易看到
-
我觉得 C++ 不得不这么频繁地反对使用 c 的东西有点难过。我不知道任何 c,但我很确定它是一种几乎和 c++ 一样漂亮的语言,如果它是 c++,就没有正当理由在你的代码中使用
malloc和free -
如果您遇到
malloc()和free()的问题,您没有小 问题,您有大问题。对于入门级程序员(以及其他人)来说,存储管理是最可怕的事情之一。由于这是标记为 C++,为什么不std::vector?它让事情变得更容易(不需要malloc()/free()也不需要new[]/delete[])。