6 c pointers segmentation-fault
以下C代码返回"分段错误"错误.我不明白为什么它不返回值20.我的错误是什么?
#include <stdio.h>
int main()
{
int* n;
*n = 20;
printf("%i\n",*n);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*her 15
你没有分配内存n,所以
*n = 20;
Run Code Online (Sandbox Code Playgroud)
试图写出未指定的内存.
尝试
#include <stdlib.h>
int *n = malloc(sizeof *n);
/* use n */
free(n);
Run Code Online (Sandbox Code Playgroud)
你有没有为你分配的空间int,你只申报一个指针到int。
指针未初始化,因此写入内存中的未知空间是未定义的行为并会导致问题。这通常会导致段错误。
您可以使用malloc以下方法为整数分配一个插槽:
n = malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)
并free在稍后使用相应的调用来释放内存:
free(n);
Run Code Online (Sandbox Code Playgroud)
但是为一个整数分配一个槽是很不寻常的,通常你会int在堆栈上分配:
int n;
n = 20;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3393 次 |
| 最近记录: |