gpt4 book ai didi

c++ - 如何修复 C++ 上的段错误

转载 作者:行者123 更新时间:2023-11-28 06:17:01 25 4
gpt4 key购买 nike

我正在尝试为 amd64arch 构建它,但它一直给我段错误:

    #include "client.h"

namespace {

class SimpleClientImpl : public SimpleClient {
private:
int progress_counter_;

public:
SimpleClientImpl() : progress_counter_(0) {}

int GetProgress() const;
char* CutPrefix(char* data);
};

int SimpleClientImpl::GetProgress() const {
return progress_counter_;
}

char* SimpleClientImpl::CutPrefix(char* data) {
progress_counter_++;
return data + *reinterpret_cast<size_t*>(data) + sizeof(size_t);
}

} // namespace

std::shared_ptr<SimpleClient> CreateSimpleClient() {
return std::shared_ptr<SimpleClient>(new SimpleClientImpl);
}

在 client.h 中我得到:

    #ifndef TEST_CLIENT_H_
#define TEST_CLIENT_H_

#include <memory>

class SimpleClient {
public:
virtual int GetProgress() const = 0;
virtual char* CutPrefix(char* data) = 0;
virtual ~SimpleClient() {}
};

std::shared_ptr<SimpleClient> CreateSimpleClient();

#endif

知道如何解决这个问题吗?我不确定为什么它会给我一个段错误,我试过以管理员身份运行它,但我真的不知道问题出在哪里。

最佳答案

 char* CutPrefix(char* data);

可能永远不会为该字符串上的指针分配内存(使用 new 或 c malloc);

我猜你误写了这一行:

return data + *reinterpret_cast<size_t*>(data) + sizeof(size_t);

如果你真的想在 cpp 中继续使用 char*,你应该使用 strings,或者事先正确分配。

关于c++ - 如何修复 C++ 上的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30053065/

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