gpt4 book ai didi

C++ - 创建安全的 const char* 构造函数

转载 作者:太空狗 更新时间:2023-10-29 23:44:14 26 4
gpt4 key购买 nike

我正在创建一个类,它有一个从 const char* 初始化的构造函数,它应该使用缓冲区中提供的数据安全地构造一个对象,该数据应该包含一个字符串。我担心的是,用户可以将此构造函数用于错误的数据,例如NULL 指针或指向未分配内存或类似内容的指针。关键是,在那种情况下,我想完成创建对象(它将处于未定义但正确的状态),而不会导致段错误,例如,如果用户向我发送了一个指向我不应该读取的数据的指针。我想将所有输入验证发送到 std::string 构造函数,因此构造函数看起来像这样:

Foo(const char *s) : Foo(std::string(s)) {}

但我的老师称这是一个“错误的想法”。那么,对于这种情况,正确的处理方式是什么?

还有一件事,在那种情况下我不能使用异常(这是我类(class)中的家庭作业的一部分,还没有教它)。

最佳答案

问题是有些事情您绝对无法检查。该组中最大的是指向无效内存的指针。例如:

char* blarg = new char[50];
delete blarg;
Foo(blarg);

Here是关于你所问内容的另一个对话。那里有一些很好的答案,但他们基本上说的是同一件事。在处理指针输入时,无法 100% 确定用户没有做一些愚蠢的事情,例如在将指针传入之前调用 delete。

关于C++ - 创建安全的 const char* 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33919477/

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