RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-303221

Сергей Терпеливый's questions

Martin Hope
Сергей Терпеливый
Asked: 2023-07-05 18:39:52 +0000 UTC

从 const char* 函数返回时崩溃

  • 8

有这个代码

const char* get_msg(){
    const char str[] = "get_msg";
    return str;
}

#include <stdio.h>
int main(){
    printf("%s\n", get_msg());
}

编译时,它会产生

警告:函数返回局部变量的地址 [-Wreturn-local-addr]

当然,应用程序在执行时会崩溃。我明白为什么会发生这种情况,因为字符串位于堆栈上,并且在函数返回值后被销毁。

但是,如果函数像这样重写

const char* get_msg(){
    return "get_msg";
}

那既不存在,也不存在 Varningov 或 Falling。我对return "get_msg"; 的工作原理感兴趣;?原来这一行是在堆栈上的?或者在哪里?毕竟,从逻辑上讲,这一行应该在函数返回后“消失”。

我这样编译: gcc main.c -o main

c++
  • 3 个回答
  • 42 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-05-19 07:16:55 +0000 UTC

将子对象传递给函数

  • 2

只有一个代码:

void foo(A a){
  a.speak();
}

class A{
public:
    void speak(){cout << "A speak\n";}
};

class B : public A{
public:
    void speak(){cout << "B speak\n";}
};

int main(){
 A a;
 B b;
 foo(a);
 foo(b);
}

从我阅读的书籍中,我了解到类型 A 的指针可以引用类 A 的女儿的对象,但这里对象 b 通过值传递给函数并且代码有效。我不明白为什么会发生这种情况,编译器不应该在这一行发誓吗?

c++
  • 1 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-05-14 15:05:35 +0000 UTC

函数指针大小

  • 1

让有一个平庸的代码:

void foo(){}

int main(){
std::cout << foo;
}

控制台输出: 1.我不明白为什么会这样,因为foo这种情况下,函数应该输出地址,肯定不等于1。

c++
  • 2 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-05-06 01:40:36 +0000 UTC

编写一个 CMAKE 来使用 vulkan 和 glfw

  • 0

在 QT Creator 上,要使用 VulkanAPI 和 GLFW 创建应用程序,您需要为 CMAKE 编写脚本,但我几乎不了解这个构建系统。我可以为 gcc 编写一个命令,但它不适用于 CMAKE。Vulkan 标头位于 /home/sergey/library/VulkanApi/1.1.106.0/x86_64/include,库位于 /home/sergey/library/VulkanApi/1.1.106.0/x86_64/此处 GLFW 库 /usr/local/lib,并且标头在 /usr/local/include 中。另外,我使用此命令pkg-config --static --libs glfw3静态链接库

c
  • 1 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-04-27 04:17:22 +0000 UTC

子选择器

  • 2

我最近开始学习 HTML + CSS,在浏览子选择器时遇到了问题。有一个简单的代码:

<div>
<p>Известно, что пустыня обладает неправильной формой, которую
принимаем прямоугольной. Это достигается одним из двух способов —
<i>включением частей</i>, выходящих за пределы области пустыни
или их <i>отбрасыванием</i></p>
</div>
<p>
<h1>Текст1<h2>Текст2</h2></h1>
</p>

样式是:

p > h1{
    color: red;
}

h1 > h2{
    color: blue;
}

第一种风格和第二种风格都不起作用。我不知道为什么会这样。

html
  • 2 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-04-11 00:40:29 +0000 UTC

嵌套函数中的局部名称

  • 1

有一些代码:

def aaa():
    t = "text"

    def bbb():
        print(t)

    return bbb


v = aaa()
v()

在 aaa 函数的主体中,创建并返回了 bbb 函数。看不懂2点: 1.为什么V()调用不报错,因为函数对象应该在退出body后销毁。2. 为什么变量 t = "text" 没有被销毁?原因是一样的

python
  • 1 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-04-08 23:16:18 +0000 UTC

对缓存对象的引用数

  • 1

目前我正在尝试从 Martk Lutz 的书中学习 python。在其中一章中,他谈到了打字和共享链接。他写道,一些对象是预先缓存的,因此不会为了优化而创建频繁的数字和字符串。我不清楚在调用 sys.getrefcount(0) 函数时,我的 pyCharm 环境给出的答案是 173,我很清楚这意味着什么,但是如果您将不同的值作为参数传递,例如数字 1234127832.11101 ,那么函数的响应将等于 3。我不明白这个数字到底是从哪里来的,因为它应该像 1,因为这个对象被使用过一次。请帮忙!

python
  • 1 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-03-02 01:09:48 +0000 UTC

定义和声明模板方法[重复]

  • 0
这个问题已经在这里得到了回答:
将模板类方法移动到 .cpp 3 个答案
头文件中的类模板声明不适用于单独的实现文件中的方法定义 3 个答案
3年前关闭。

有一个代码在不同的文件中。abc2.cpp

template <typename T>
void ABC2::set(std::vector<T> t) {
    n = t.at(0);
}

abc.h

class ABC2 {
public:
    int n = 0;
    ABC2() {}
    ~ABC2() {}

    template <typename T>
    void set(std::vector<T> t);

};

我正在尝试编译它,但在链接阶段发生错误:对未解析的外部符号的引用。问题是,是否可以在另一个文件中定义非模板类的模板方法?

c++
  • 1 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-01-19 03:27:33 +0000 UTC

带有 typedef 的 C++ 结构声明

  • 6

我经常在各种教科书中看到这种用于声明结构的语法

typedef struct Foo {
    int a;
    int b;
    int c;
} Foo;

告诉我这种语法与平庸的语法有何不同?

struct Foo {
    int a;
    int b;
    int c;
};
c++
  • 4 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2021-01-01 02:47:33 +0000 UTC

使用 volatile 关键字重载方法

  • 1

你好。我正在学习多线程编程,现在我正在尝试理解原子性。在 Anthony Williams 的书中示例中,atomic_flag 结构有 2 个重载方法。

bool test_and_set(memory_order _Order = memory_order_seq_cst) volatile noexcept;
bool test_and_set(memory_order _Order = memory_order_seq_cst) noexcept;

我创建了我的结构并做了同样的重载。她在这里

struct foo {
    bool test() volatile noexcept { cout << "volatile"; return true; }
    bool test() noexcept { cout << "No volatile"; return true; }
};

在创建对象并调用 test() 方法时,调用时没有歧义。我不明白为什么会这样。你能解释一下吗

在主线程调用 foo::test() 时,会在主函数中调用不带 volatile 关键字的方法。

c++
  • 1 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-12-15 14:08:20 +0000 UTC

用花括号和圆括号初始化

  • 1

我正在读一本书,它有一个使用 RAII 习语处理流的类的示例。这是代码

class thread_guard {
    thread& t;
public:
    explicit thread_guard(thread& _t) : t(_t){}
    ~thread_guard() {
        if (t.joinable())
            t.join();
 }
    thread_guard(thread_guard const&) = delete;
    thread_guard& operator=(thread_guard const&) = delete;
};

void f(int i, std::string const& s) {
    cout << s << " " << i << endl;
}

int main(int argc, char* argv[]){

    thread thr1(f, 2, "test");
    thread_guard{ thr1 };

}

我的问题是如果在一个函数int main中包含该操作就行

thread_guard{ thr1 };

使用括号而不是花括号,代码将无法编译。我无法弄清楚它们目前有何不同。斯科特迈尔斯没有写关于它

c++
  • 2 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-12-13 21:45:13 +0000 UTC

不带参数抛出异常

  • 4

我正在阅读一篇关于异常的文章,并决定从那里复制代码。这是代码:

int main(int argc, char* argv[]){

try {
    throw;
}
catch (...) {
    cout << "exception\n";
    return 1;
}

cout << "No exeption\n";
return 0;

}

文章说 catch 块应该捕获它,但事实并非如此。为什么?我使用 msvs 2017。还有更多,

int main(int argc, char* argv[]){
int x = 0;
try {
    cout << 2 / x;
}
catch (...) {
    cout << "exception\n";
    return 1;
}

这里也没有捕获“除以 0”类型的异常。为什么?

c++
  • 4 个回答
  • 10 Views
Martin Hope
Сергей Терпеливый
Asked: 2020-08-29 03:30:48 +0000 UTC

从着色器中获取价值

  • 0

让简单的着色器构成一个着色器程序:

sh.vert

layout (location = 0) in vec3 position;
out vec4 vertexColor;
uniform vec2 u_vector;

void main() {
    gl_Position = vec4(position, 1.0);
    vertexColor = vec4(0.5f, 0.0f, 0.0f, 1.0f);
}

sh.frag

in vec4 vertexColor; 
out vec4 color;

void main() {
    color = vertexColor;
}

这样的着色器程序有很多,程序中的每个对象都可以使用自己的。问题是:有没有办法找出分配给统一变量的值u_vector?

c++
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5