gpt4 book ai didi

C++ 返回指针仅给出数组的第一个元素

转载 作者:行者123 更新时间:2023-11-30 19:58:25 29 4
gpt4 key购买 nike

我正在研究 DirectX,我有一个函数可以提供预定义的自定义顶点数组,它是

CUSTOMVERTEX* createSampleTriangle()
{
CUSTOMVERTEX verts[] =
{
{320.0f, 50.0f, 0.5f, 1.0f, D3DCOLOR_ARGB (0, 255, 0, 0), },
{250.0f, 400.0f, 0.5f, 1.0f, D3DCOLOR_ARGB (0, 0, 255, 0), },
{50.0f, 400.0f, 0.5f, 1.0f, D3DCOLOR_ARGB (0, 0, 0, 255), }
};

return verts;
}

现在,我得到这样的结果:

CUSTOMVERTEX *v = createSampleTriangle();

但是当我逐行调试时,我只看到 v 下的一个顶点,尽管 verts 显示其下有 3 个顶点。程序不会崩溃,但是当出现问题时 DirectX 不会渲染,它只是跳过该函数。

知道为什么会发生这种情况吗?该函数是否不返回一个已分配内存的指针,该内存是在 v 处理之后的?

最佳答案

您将返回一个指向本地自动对象的指针,该对象在您返回时已不复存在。

这是未定义的行为,即所谓的悬空指针

使该对象静态,或者动态分配它,或者其他什么。我会选择使用 std::vector

关于C++ 返回指针仅给出数组的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30379361/

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