代码的分段错误

segmentation fault for the code

本文关键字:错误 分段 代码      更新时间:2023-10-16
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
using namespace std;
union type{
            int a;
            char b;
            int *p;
            char *s;
            int arr[10];
};
int fn(union type *exp){
    exp->p = exp->p+1;
    cout << *(exp->p);
    cout << "n";
return 0;
}
int main(){
    union type *str;
    str->a = 10;
    str->b = 'n';
    str->p = &(str->a);
    cout << (str->p);
    cout << "n";
    fn(str);
    cout << str->p;
    cout << "n";
return 0;
}

这段代码给了我分段错误。是因为我需要使用 malloc 显式地将内存分配给联合吗?我是编码新手,并尝试学习c ++。

这段代码给了我分段错误。是因为我需要 使用 malloc 显式将内存分配给联合??

右。您的str指针没有指向有效的内存位置,甚至没有初始化。因此,在编写str->a之前,您需要将str设置为某些内容。

您正在声明指向联合的指针,但指针未指向任何有效内存,您需要 malloc/new 来获取该内存。 它指向的是未定义的(垃圾指针)。