草庐IT

file_str

全部标签

c++ - 如果没有正确删除,为什么 wstring::c_str 不会导致内存泄漏

代码段1:wchar_t*aString(){wchar_t*str=newwchar[5];wcscpy(str,"asdf\0");returnstr;}wchar_t*value1=aString();代码段2wstringwstr=L"avalue";wchar_t*value=wstr.c_str();如果代码段2中的值未被删除,则不会发生内存泄漏。但是,如果代码段1中的value1未被删除,则存在内存泄漏。wstring::c_str的内部代码在我看来是一样的。 最佳答案 一条重要规则:您必须对new创建的任何内容使用d

c++ - 为什么data()和c_str()返回的是char const*,而operator[]返回的是char&?

为什么std::string::data和std::string::c_str()返回指向const字符的指针,而std::string::operator[]返回对可变字符的引用?std::stringstring("eightfoldisthegreatest");autos=string.data();*s='r';//illegalautot=&string[0];*t='r';//totallyfineauto&c=string[0];c='r';//totallyfine为什么std::string::data()和std::string::c_str()不返回char*,

c++ - include "file.h"vs <file> 有什么区别?

我在VisualStudio2010中工作。我在ProjectProperties->Linker->General->AdditionalDirectories添加了一个目录如果我使用项目编译"file.h"但如果我使用则不会 最佳答案 您可能假设隐式添加.h到文件名的末尾。这不是真的。你是否使用或""对文件名没有意义。它基本上告诉实现应该以何种顺序遍历包含目录以查找头文件。引用标准:Apreprocessingdirectiveoftheform#includenew-linesearchesasequenceofimpleme

c++ - QAction : No such file or directory

我遇到了错误QAction:Nosuchfileordirectory当我尝试为插件(C++库模板)编译项目时。很奇怪,因为我的应用程序有一个项目,其中也包含此header并且没有错误。这可能是什么原因造成的? 最佳答案 对我来说,我有一些陈旧的moc_和ui_文件是在不同版本和配置的Qt下编译遗留下来的,所以删除它们解决了我的问题。rmmoc_*ui_**.o 关于c++-QAction:Nosuchfileordirectory,我们在StackOverflow上找到一个类似的问题:

c++ - OpenCV: "libopencv_core.so.2.3: cannot open shared object file: No such file or directory"

我刚刚在我的Debian机器上安装了OpenCV,但遇到了一些问题。我遵循了Wiki上的安装指南。尝试编译示例给出了似乎是成功的编译,但是尝试运行它们最终会抛出错误:fagg@hubble:~/src/OpenCV-2.3.1/samples/cpp$g++-Wallem.cpp-lopencv_core-lopencv_imgproc-lopencv_calib3d-lopencv_video-lopencv_features2d-lopencv_ml-lopencv_highgui-lopencv_objdetect-lopencv_contrib-lopencv_legacyfa

c++ - 如何从 std 字符串 (c_str()) 设置 char * 值不起作用

我不知道,但这对我不起作用,当我尝试从返回标准字符串的函数中设置char*值时,我得到了垃圾值:stringfoo(){stringtmp="dummyvalue";returntmp;}char*cc=(char*)foo().c_str();//ifiremovethecastingimgettingerror//wheniprinttheccigetgarbageprintf("%s",cc); 最佳答案 cc指向的数据的生命周期与它来自的字符串的生命周期相同(充其量-如果您修改字符串,它甚至更短)。在你的例子中,foo()的

c++ - 如何用支持 __LINE__ 和 __FILE__ 的内联函数替换我的 C++ 异常宏?

我目前正在阅读ScottMeyers的《EffectiveC++》一书。它说对于类似函数的宏,我应该更喜欢inline函数而不是#define。现在我尝试编写一个内联函数来替换我的异常宏。我的旧宏看起来像这样:#define__EXCEPTION(aMessage)\{\std::ostringstreamstream;\stream我的新内联函数是这样的:inlinevoid__EXCEPTION(conststd::stringaMessage){std::ostringstreamstream;stream可能有些人已经预料到,现在__FILE__和__LINE__宏没用了,因为

c++ - 重新定义 __LINE__ 和 __FILE__ 常量

我正在为C++制作内存泄漏检测器。它取代了全局的new运算符,并使用宏来初始化两个全局变量,__file__和__line__,如下所示:#definenew(__file__=__FILE__,__line__=__LINE__)&&0?NULL:new我从另一个StackOverflow用户那里学到了这个技巧,我不记得他的名字了。这适用于涉及new的简单操作,但是当用户为命名空间定义本地运算符new时,这种方法会导致问题。一方面,像这样的行void*operatornew(size_tsize);也被宏匹配;此外,显式调用globalnew,例如:int*i=::newint;导致

c++ - Clangs C++ 模块 TS 支持 : How to tell clang++ where to find the module file?

在他的talk在CppCon上,RichardSmith提到尽管ModuleTS支持目前正在进行中,但它已经可以使用了。所以我从svn构建了clang4.0,并在一个非常简单的示例上进行了尝试。在我的myclass.cppm文件中,我为int定义了一个简单的包装器modulemyclass;exportclassMyClass{public:MyClass(inti):_i{i}{}intget(){return_i;}private:int_i;};和我的main.cpp只是创建该类的一个实例,并将其保存的int输出到std::cout。#include#includeimportm

c++ - 来自 Xcode 8.3.2 : Non-portable path to file - specified path differs in case from file name on disk 的错误警告

出于某种原因,我的代码库突然开始收到数以千计的此类警告。但到目前为止,所有有问题的文件和路径都是完全正确的,与我在磁盘上看到的与Finder相匹配。他们是不是在暗地里另有幕后?当问题实际上并不存在时,为什么Xcode会生成这些警告?尽管http://stackoverflow.com/questions/43067017/non-portable-path-to-file-file-h-specified-path-differs-in-case-from-file-na是关于相同的警告,在这种情况下我已经验证导入路径与磁盘上的文件名匹配。 最佳答案