#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 ++的新手。
答案 0 :(得分:3)
这段代码给了我分段错误。是因为我需要 使用malloc ??
显式地为联合分配内存
右。您的str
指针未指向有效的内存位置,甚至未初始化。因此,在撰写str->a
之前,您需要将str
设置为某些内容。
答案 1 :(得分:1)
您正在声明指向联合的指针,但指针未指向任何有效的内存,您需要malloc / new。它指向的是未定义的(垃圾指针)。