gpt4 book ai didi

c++ - std::cin >> *aa 导致总线错误

转载 作者:行者123 更新时间:2023-11-27 22:30:50 25 4
gpt4 key购买 nike

我有一个名为 PPString 的类:

PPString.h

#ifndef __CPP_PPString
#define __CPP_PPString

#include "PPObject.h"

class PPString : public PPObject {
char *stringValue[];
public:
char *pointerToCharString();
void setCharString(char *charString[]);
void setCharString(const char charString[]);
};

#endif

PPString.cpp

#include "PPString.h"

char *PPString::pointerToCharString() {
return *stringValue;
}

void PPString::setCharString(char *charString[]) {
*stringValue = *charString;
}

void PPString::setCharString(const char charString[]) {
*stringValue = (char *)charString;
}

我正在尝试使用 std::cin 设置 stringValue:

main.cpp

PPString myString;
myString.setCharString("LOLZ");
std::cout << myString.pointerToCharString() << std::endl;

char *aa[1000];
std::cin >> *aa;
myString.setCharString(aa);
std::cout << myString.pointerToCharString() << std::endl;

第一个使用 const char 可以工作,但是第二个使用 char 不行,我得到这个输出:

从标准输出复制粘贴

LOLZ
im entering a string now...
Bus error

第二行是我输入的内容,然后按 return 键。

谁能帮我解决这个问题?谢谢...

最佳答案

带有 char *s[] 签名的 setCharString 取消引用指向 char* 的指针数组的第一个元素。它尚未分配。如果将 aa 的声明更改为 char aa[1000];,它可能会运行。

还有一些其他问题(其他人也指出)。对变量 stringValue 的赋值也解除了对似乎未分配的内存的引用。很难说用法是什么,但它可能不应该有 [] 声明。此外,赋值存储了一个指向堆栈内存的指针,该指针在另一个函数调用后可能无效。

关于c++ - std::cin >> *aa 导致总线错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2708338/

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