gpt4 book ai didi

c++ - 以下代码给出了段错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:54 24 4
gpt4 key购买 nike

我正在尝试执行以下代码,这会给我带来段错误。我在做什么错误或者我是否遗漏了任何部分?这段代码可以用其他方式实现吗?

代码:

#include <iostream>
#include "string.h"

using namespace std;

struct A {
char* a;
};

int main()
{
struct A *x;
x->a = "soumya";
char* str = "soumya";
cout<<str<<endl<<(char*)x->a<<endl;
// if(strcmp(x->a,str)!=0)
// {
// cout<<"not same"<<endl;
// }

return 0;
}

最佳答案

您没有将 x 指针初始化为 struct A,因此它最初指向内存中未分配的某个未定义区域。

因此,通过执行 x->a = "soumya";,您正在尝试写入导致段错误的空间。

你可以改变

struct A *x;

struct A *x = malloc(sizeof(struct A));
// Don't forget to free this memory if your program is going to run for some time

或到

struct A x;

并将每个 x->a 替换为 x.a 在这种情况下,内存分配在堆栈中,因此它将在方法结束时自动释放。

关于c++ - 以下代码给出了段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43014020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com