草庐IT

信道分配

全部标签

c++ - 内存分配使操作系统崩溃。除了操作系统,谁应该受到指责

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭7年前。Improvethisquestion这个简短的片段#includeintmain(){while(true){try{newchar[0x10000000];}catch(std::bad_allocbac){}}}当编译为64位应用程序并在64位Windows系统上运行时,显然会使整个操

c++ - STL C++ 中的内存分配

我对STLC++中的内存重新分配有点困惑。例如,我知道如果我声明一个vector,并继续将元素推回其中,则该vector将在某个时候需要重新分配内存空间并将所有现有元素复制到其中。对于链表,不需要重新分配,因为元素不是连续存储在堆栈中的,每个元素使用一个指针指向下一个元素。我的问题是,C++中的其他STL的情况如何?例如,string、map、unordered_map?他们需要重新分配吗? 最佳答案 (免责声明:标准可能不需要此处指定的所有具体数据结构,但记住它们有助于将规则链接到具体内容)std::string~=std::ve

c++ - 如何在基于派生类的大小的基构造函数中分配数组?

我有一个类层次结构。基类使用一些可从文件加载(并可在运行时重新加载)的调整参数。每个派生类都可以添加一些额外的参数。我正在寻找一种在基本构造函数中分配大小正确的参数数组的方法,这样我就不必在派生类中取消分配和重新分配。我希望有这样的东西,但它不起作用(参数总是有2个元素):classBase{staticintnParms;virtualintgetNParms(){returnnParms;}float*parameters;public:Base(){parameters=newfloat[this->getNParms()];parameters[0]=globalReloada

c++ - 重新分配引用

假设我有一个类classFoo{public:~Foo(){delete&_bar;}voidSetBar(constBar&bar){_bar=bar;}constBar&GetBar(){return_bar;}private:Bar&_bar;}我对这个类的用法如下(假设Bar有一个工作拷贝构造函数)Foof;f.SetBar(*(newBar));constBar*bar=&(f.GetBar());f.SetBar(*(newBar(bar)));deletebar;我有一个类似的情况(在我没有写的代码中)并且当我在“删除栏”上设置的断点处进行调试时;行,我看到了&f._ba

c++ - 如果我在使用新程序和结束程序分配数据后没有调用 delete 运算符,会发生什么情况?

如果我在使用new分配数据后没有调用delete操作符会发生什么。我知道已分配的数据在释放之前不可用,但在程序结束后?为什么PC看起来很恶心xD,我的意思是它很慢但是过了一段时间它的性能变得更好但不像程序执行之前那样?注意:我运行的是WindowsXP。 最佳答案 当程序结束时,它请求的所有内存(堆栈、堆等)都被操作系统要求。 关于c++-如果我在使用新程序和结束程序分配数据后没有调用delete运算符,会发生什么情况?,我们在StackOverflow上找到一个类似的问题:

c++ - 在分配期间调用不需要的对象的析构函数

myClassVar=MyClass(3);我希望在左侧先前创建的myClassVar上调用析构函数。但它实际上是在MyClass(3)创建的新对象上调用的。我的完整测试代码和输出如下..编辑我该如何解决这个问题?实现赋值运算符?MyClass其实是有指针的,还有MYSQL_STMT*,我想知道我应该如何处理MYSQL_STMT*变量。我只需要MyClassVar(3)对象而不是在创建ClientClass对象时首先创建的MyClassVar()。我经常遇到这种情况,想知道是否有好的方法。#includeclassMyClass{public:MyClass(){printf("MyC

c++ - 是否可以在分配期间在 C++ 中给出一个类的定义,这在 Java 中是允许的

或者简单地说我可以做一些事情吗classA{public:virtualvoidfoo()=0;};classB{public:A*a;b(){a=newA(){voidfoo(){printf("hello");}}}; 最佳答案 不,C++没有像Java那样的匿名类。你可以像这样定义本地类:classB{public:A*a;b(){structmy_little_class:publicA{voidfoo(){printf("hello");}};a=newmy_little_class();}};或者可能只是一个嵌套类:cl

C++,为什么在修改新分配的对象后会出现访问冲突?

好吧,我目前正在开发一款游戏,今天重构了一些代码后遇到了内存问题。它使用基于组件的设计,我正在修改组件分配和传递给实体的方式。最初一些组件被分配为实体内的成员变量,但现在我想将它们分配到别处并通过指针传递给实体。您可以在下面看到我是如何使用我项目中的示例代码实现这一点的。我基本上遍历所有实体并为它们分配组件。问题是我在第6次迭代“启动”“instanceObject”的第一行遇到了访问冲突,但不知道为什么。使用调试器,看起来没有任何变量指向无效地址。这是我创建实体和组件的方法。for(unsignedinti=0;inumberGenerator.GetInt(50,5);_posit

c++ - 奇怪的异常抛出 - 分配 : Operation not permitted

我想从cin进行异步读取,因此我有一段代码客户端.h...boost::asio::posix::stream_descriptorinput;boost::asio::streambufinput_buffer客户端.cppClient::Client(intargc,char**argv,boost::asio::io_service&io_service):tcp_socket(io_service),udp_socket(io_service),input(io_service,::dup(STDIN_FILENO)){...read_std_input();}voidClie

c++ - 如何将二维数组相互分配?

组件我有一个字符串,例如字符block[4][256]="";我有一句话charsentence[256]="Bobwalkedhisdog";我还有一个迭代器变量intpos=0;我正在努力实现的目标我正在尝试将数组sentence中的每个单词按顺序分配到二维block数组block中。例如,假设我有这段代码(我自己写的-没有按我的计划工作)for(intx=0;x我怎么看我通过处理这个问题来看待它的方式是,我需要先扫描句子,直到遇到一个空格''字符,一个空白。遇到这种情况后,我必须重新扫描句子并开始将所有字符添加到该空格''的位置到我的block数组block[y][z]的第一段中