草庐IT

heap_string_malloc

全部标签

c++ - malloc() 和虚函数有什么问题?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++:whyisnewneeded?当我的对象是包含虚函数的类的子类时,为什么我不能使用malloc为它们分配空间?这真是令人沮丧。有充分的理由吗?下面的程序说明了这个问题。它在第27行出现段错误,我在那里调用aa->f()#include#includeclassA{public:virtualintf(){return1;}};classB{public:intf(){return1;}};classAa:publicA{};classBb:publicB{};intmain(){Aa*aa=(Aa*)

c++ - 修剪 std::string 中的内部空格

我正在寻找一种优雅的方式来转换std::string,例如:std::stringtext="a\tvery\tugly\t\t\t\tstring";收件人:std::stringtext="averyuglystring";我已经用boost::trim(text);修剪了外部空白[编辑]因此,多个空格和制表符被缩减为一个空格[/编辑]删除外部空白是微不足道的。但是有没有一种优雅的方法可以删除内部空白,而不涉及手动迭代和比较前后字符?也许我错过了boost中的某些内容? 最佳答案 您可以使用std::unique和std::re

c++ - 如何有效地将 std::vector<char> 复制到 std::string

这个问题是这个Howtoefficientlycopyastd::stringintoavector的反面我通常以这种方式复制vector(空终止字符串)std::strings((char*)&v[0]);或者(如果字符串已经被声明)像这样s=(char*)&v[0];它完成了工作,但也许还有更好的方法。编辑C风格的转换很丑陋,有人告诉我这又如何s=reinterpret_cast(&vo[0]); 最佳答案 只需使用迭代器构造函数:std::strings(v.begin(),v.end());(编辑):或者使用char-poi

c++ - C++ 中的对齐 malloc

我对《破解编码面试》一书中的第13.9题有一道题。题目是写一个支持分配内存的alignedallocandfreefunction,答案中的代码如下:void*aligned_malloc(size_trequired_bytes,size_talignment){void*p1;void**p2;intoffset=alignment-1+sizeof(void*);if((p1=(void*)malloc(required_bytes+offset))==NULL)returnNULL;p2=(void**)(((size_t)(p1)+offset)&~(alignment-1)

c++ - g++ 是否满足 std::string C++11 要求

考虑以下示例:intmain(){stringx="hello";//copyconstructorhasbeencalledhere.stringy(x);//c_strreturnconstchar*,butthisusageisquitepopular.char*temp=(char*)y.c_str();temp[0]='p';cout>x;return0;}在visualstudio编译器和g++上运行它。当我这样做时,我得到了两个不同的结果。在g++中:x=pelloy=pello在VisualStudio2010中:x=helloy=pello差异的原因很可能是g++st

c++ - std::string::find 在 C++ 中无法正常工作

我正在尝试验证特定字符串是否在输入字符串中,如果是,则根据找到的字符串执行某些操作;但似乎无论如何它总是在做第一个任务......if(inputString.find(str1)>=0){//dosomething}elseif(inputString.find(str2)>=0){//dosomethingelse}else{std::cout无论inputString中是否存在str1,它总是进入//dosomethingblock。如果我这样做intstr1pos=inputString.find(str1);intstr2pos=inputString.find(str2);

c++ - 将未知长度的 char** (c) 转换为 vector<string> (c++)

这个问题在这里已经有了答案:convertinganarrayofnullterminatedconstchar*stringstoastd::vector(4个答案)copyingcarrayofstringsintovectorofstd::string(4个答案)关闭9年前。如何将Cchar**转换为C++vector?是否有一些内置功能可以用来执行此操作,还是通过一系列迭代步骤来完成它更好?编辑:由于各种原因,C数组中的元素数量未知。我可以将其作为另一个参数传递,但这是绝对必要的吗?

c++ - 错误 : Variable length array of Non-POD element type 'string'

在开始之前,我必须首先声明,我已经研究过针对此错误的可能解决方案。不幸的是,它们都与不使用数组有关,这是我项目的要求。另外,我目前正在学习CS入门类(class),所以我的经验几乎没有。数组的用途是从文件中收集名称。因此,为了初始化数组,我计算了名称的数量并将其用作大小。问题是标题中所述的错误,但我仍然使用一维数组时看不到解决方法。主要.cpp#include#include#include#include#include#include"HomeworkGradeAnalysis.h"usingnamespacestd;intmain(){ifstreaminfile;ofstrea

C++ g++ 在类头文件中找不到 'string' 类型

我是C++的新手,但我不明白为什么这不会为我编译。我在Mac上运行,使用Xcode编码,但我正在使用来自bash的我自己的makefile进行构建。无论如何,即使我已经包含了.欢迎任何帮助。代码://#include//I'vetriedithere,too.I'mfoggyonincludesemantics,butIthinkitshouldbesafeinsidethecurrentpreprocessor"branch"#ifndefAPPCONTROLLER_H#defineAPPCONTROLLER_H#includeclassAppController{//etc.pub

c++ - 如果使用 delete 而不是 free 删除使用 malloc 分配的内存怎么办

我遇到了一个我无法解决的问题。我的问题是,如果我使用malloc分配内存,然后使用delete删除内存块?一般的经验法则是Ifweallocatememoryusingmalloc,itshouldbedeletedusingfree.Ifweallocatememoryusingnew,itshouldbedeletedusingdelete.现在,为了检查如果我们反过来会发生什么,我写了一个小代码。#include#include#includeusingnamespacestd;classA{intp=10;public:intlol(){returnp;}};intmain()