小编Sco*_*ver的帖子

存储指向NRVO返回的对象的指针

如果我编写一个在本地实例化对象然后按值返回的工厂方法,打算利用NRVO(根据这里的一些答案:c ++ 11返回值优化或移动?),指针/引用将是本地对象指向分配了方法返回值的对象?

Object ObjectBuilder::BuildObject( void )
{
    Object obj;

    //this->ObjectReference = obj; //Disregard this
    //OR
    this->ObjectPtr = &obj;

    return obj;
}
Run Code Online (Sandbox Code Playgroud)

正在使用:

ObjectBuilder builder;

Object newObject = builder.BuildObject();
Run Code Online (Sandbox Code Playgroud)

builder.ObjectPtr是否引用newObject?

c++ copy-elision c++11

8
推荐指数
1
解决办法
159
查看次数

Visual Studio发布配置文件-为什么不跟踪源代码管理?

当我发现此.gitignore文件(我一直在使用)中包含.pubxml文件时,我正在通过创建发布配置文件来探索用于部署ASP.NET Web应用程序的选项:

https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

到处搜索,其理由似乎是对发布配置文件的引用或发布配置文件中的引用包含绝对路径或其他信息,这些信息可能仅在当时的本地开发机器上有效。

谁能证实排除在外的原因?

asp.net version-control web-deployment webdeploy visual-studio-2013

5
推荐指数
3
解决办法
2179
查看次数

C++:obj 文件的链接顺序重要吗?

以声明和定义简单函数的头文件和实现文件以及包含调用该函数的 main() 的第二个实现文件为例,编译器将生成两个目标文件。

1)当链接这些文件以生成可执行文件时,顺序重要吗?

这个问题的答案表明顺序并不重要。

该站点明确同意,并给出了使用 GCC 的示例。

2) 如果顺序很重要,那么像 Visual Studio 这样的 IDE 如何确定适当的链接顺序?

我清楚地记得在使用 gcc/g++ 构建时遇到未解决的符号错误,并且需要更改 makefile 中目标文件的顺序来解决此问题。但是,我可能记错了链接文件。

c++ linker visual-studio

3
推荐指数
1
解决办法
2237
查看次数

Vulkan 内存对齐要求

我正在为 Vulkan 设备内存实现一个简单的内存管理器,并希望确保我了解内存的对齐要求以及如何满足这些要求。

因此,假设我已经使用 vkAllocateMemory 分配了一个内存“池”,并希望将该池中的内存块子分配给各个资源(基于 VkMemoryRequirements 结构),以下伪代码是否能够分配该内存具有正确的大小和对齐要求吗?

  • 使用RequiredSize和RequiredAlignment请求内存
  • 遍历池中的块,寻找空闲且大小 > requiredSize 的块
  • 如果当前块在内存中的偏移量不能被RequiredAlignment整除,则计算对齐方式和余数之间的差异
  • 如果当前块的大小减去差值小于RequiredSize,则跳到池中的下一个块
  • 如果差值大于0,则插入大小等于差值的填充块,并调整当前未分配的块大小和偏移量
  • 从当前未分配块(现已对齐)的开头分配RequiredSize字节,相应调整未分配块的Size和Offset
  • 返回 vkDeviceMemory 句柄(池的)、大小和偏移量(新分配块的)
  • 如果我们到达块列表的末尾,则该池无法分配内存

换句话说,我们是否只需要确保Offset是RequiredAlignment的倍数就可以了?

c++ memory memory-management vulkan

3
推荐指数
1
解决办法
5485
查看次数