小编Roc*_*ock的帖子

使用std :: list <std :: string>时,std :: string会导致内存泄漏

std::list<std::string>在我目前的项目中工作.但是有一个与此相关的内存泄漏.所以我分别测试了有问题的代码:

#include <iostream>
#include <string>
#include <list>

class Line {
public:
    Line();
    ~Line();
    std::string* mString;
};

Line::Line() {
    mString = new std::string("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
}

Line::~Line() {
    //mString->clear(); // should not be neccessary
    delete mString;
}

int main(int argc, char** argv)
{
    // no memory leak
    while (1==1) {
        std::string *test = new std::string("XXXXXXXXXXXXXXXXXXXXXXXX");
        delete test;
    }

    // LEAK!
    // This causes a memory overflow, because the string thats added
    // to the list is not deleted when the list …
Run Code Online (Sandbox Code Playgroud)

c++ string memory-leaks list

17
推荐指数
3
解决办法
2万
查看次数

通用GLSL照明着色器

基于像素的照明是许多OpenGL应用中的常见问题,因为标准的OpenGL照明质量非常差.

我想使用一个GLSL程序在我的OpenGL程序中使用基于每个像素的照明,而不是每个顶点.只是漫射光,但至少有雾,纹理和纹理-α.

我从这个着色器开始:

texture.vert:

varying vec3 position;
varying vec3 normal; 

void main(void) 
{
  gl_Position       = gl_ModelViewProjectionMatrix * gl_Vertex;
  gl_FrontColor     = gl_Color;
  gl_TexCoord[0]    = gl_MultiTexCoord0; 
  normal        = normalize(gl_NormalMatrix * gl_Normal);
  position      = vec3(gl_ModelViewMatrix * gl_Vertex);
}
Run Code Online (Sandbox Code Playgroud)

texture.frag:

uniform sampler2D Texture0;
uniform int ActiveLights;

varying vec3 position;
varying vec3 normal; 

void main(void) 
{
  vec3 lightDir;
  float  attenFactor;
  vec3 eyeDir           = normalize(-position); // camera is at (0,0,0) in ModelView space
  vec4 lightAmbientDiffuse  = vec4(0.0,0.0,0.0,0.0);
  vec4 lightSpecular        = vec4(0.0,0.0,0.0,0.0);    

  // iterate all …
Run Code Online (Sandbox Code Playgroud)

opengl glsl

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

freetype使用后备来删除字形

当字符串确实包含我在默认使用的字体中不存在的字符时,如何判断freetype使用后备字体?

我需要在我的应用程序中正确渲染非拉丁字形.

我必须自己管理一个后备吗?

如果是这样:我如何检测给定字符串中是否有丢失的字形?

freetype freetype2

6
推荐指数
1
解决办法
1557
查看次数

CMake:发现错误的 zlib - 如何从 src(使用主项目 CMakeLists.txt)构建 zlib 并链接它?

// 简要版本

如何让 CMake 使用我提供的zlib(它也必须从源代码构建)而不是查找器找到的zlib而不会破坏其他库(OpenGL)的查找器?

ZLib需要由主项目使用,也需要作为源代码使用libPNG

主要目标平台是 Windows。

// 更长的版本:

在我的项目中,我需要链接libpngzlibOpenGL。由于libpng依赖于zlib。但主项目也需要zlib

我需要为除OpenGL之外的所有库提供源代码,并将这些库与主项目一起构建以断言链接正确的版本并简化在 Windows 上的构建。

我找到了使用不存在内置查找器的自定义库来完成所有这些操作的方法,但是我无法仅针对 zlib 正确覆盖查找器。如果我更改库的搜索路径,则找不到 OpenGL。

但是我无法让 cmake 使用我提供的zlib而不是包查找器在我的系统中某处找到的 rouge zlib.DLL。(来自 tortoise git 的那个)

我试图将 ZLIB_LIBRARY 设置为特定的文件路径,但这仅适用于 MinGW,而且我也认为这不是这样做的方法。

(而且我不得不显式链接到 png16_static 而不仅仅是 libpng,出于莫名其妙的原因。)

非常感谢您对此的任何帮助。也许我以错误的方式接受这个?


目标&发展平台:

Windows7
Visual Studio 2010
and MinGW (both need to work)
Run Code Online (Sandbox Code Playgroud)

我的(简化示例)CMakeLists.txt:

cmake_minimum_required (VERSION 2.6)

project …
Run Code Online (Sandbox Code Playgroud)

mingw cmake visual-studio-2010

6
推荐指数
1
解决办法
3451
查看次数

Lisp展开/部分评估功能

有没有办法在Common Lisp中显示评估步骤,如下所示:

> (defun fac (n) (if (= n 0) 0 (if (= n 1) 1 (* n (fac (- n 1))))))
FAC
> (step-by-step (fac 3))
0: (FAC 3)
1: (* 3 (FAC 2))
3: (* 3 (* 2 (FAC 1)))
4: (* 3 (* 2 (1)))
5: (* 3 2)
6: 6
Result: 6
Run Code Online (Sandbox Code Playgroud)

寻找一种方法来可视化递归并返回一般小课程的值.我知道(step fn)并且(optimize (debug 3)))不幸的是,这不会产生所需的输出,或者我不知道如何告诉它.

注意:非emacs/slime解决方案首选

lisp debugging common-lisp

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