草庐IT

malloc_allocator

全部标签

c++ - 为什么 `e.what()` 打印 "bad allocation"?

tryblock中的new表达式在我的计算机中引发了bad_alloc异常。请注意,catch子句按值而不是按引用接收异常对象。为什么e.what()会打印出"badallocation"?我以为它会被切成薄片。#includeintmain(){try{int*p=newint[0x1F000000];}catch(std::exceptione){std::cout 最佳答案 VisualStudio(Dinkumware?)使用std::exception的实现,其中包含消息的内部存储†。(完成一个接受字符串的非标准构造函数。

c++ - 在抛出 'std::bad_alloc' what(): std::bad_alloc 的实例后终止调用

我的程序中出现了bad_alloc异常。这些是限制条件:1每个字符串的长度最多为100000,并且只包含小写字符。由于这些限制,我无法弄清楚为什么我的程序得到bad_alloc。#include#include#include#includeclassSuffixArray{std::vectorsuffixes;size_tN;public:SuffixArray(std::string&s){N=s.length();suffixes.resize(N);for(size_ti=0;i>T;std::vectorresults;for(inti=0;i>str;SuffixArra

c++ - malloced 数组和新数组之间有区别吗

我通常使用C++编程,但正在为我的char*使用一些库函数。一些像“getline”这样的联机帮助页说输入应该是一个malloced数组。可以改用“new”吗?对于我的小样本,我可以看到它有效,但这会不会在某个时候导致一些奇怪的未定义行为?我知道“new”应该匹配“delete”,而“malloc”应该匹配“free”。我也没有使用std::string。这是故意的。谢谢 最佳答案 传递给getline()的缓冲区必须被分配。原因是如果需要更多空间,getline()可能会在缓冲区上调用realloc()。realloc()与fre

c++ - 当我们有 new/delete 时,为什么要使用 malloc/free?

当我们在C++中有new和delete时,malloc和free有什么用。我想free和delete的功能是一样的。 最佳答案 它们不一样。new调用构造函数,malloc只是分配内存。此外,它是未定义的行为将两者混合(即使用new与free和malloc与删除).在C++中,你应该使用new和delete,malloc和free是为了与C的兼容性原因。 关于c++-当我们有new/delete时,为什么要使用malloc/free?,我们在StackOverflow上找到一个类似的问题

c++ - C 中的 Malloc 和结构给我错误(遵循教程)?

因此,我正在学习有关C的教程,但由于结构使用了malloc函数,而我的编译器(VisualStudioC++10.0)似乎无法正常运行该函数,因此我一直停留在结构上。所以我完全按照说明进行操作,我可以编译C,除了在这个特定的代码中,它给了我一个错误(代码从教程网站上直接获取):#include#includestructnode{intx;structnode*next;};intmain(){/*Thiswon'tchange,orwewouldlosethelistinmemory*/structnode*root;/*Thiswillpointtoeachnodeasittrav

c++ - 结构 (C) 中的 malloc 错误

我在C头文件中有如下代码typedefstruct{kiss_fft_scalarr;kiss_fft_scalari;}kiss_fft_cpx;并且我在测试程序中实现了如下代码kiss_fft_cpx*fin=malloc(4*sizeof(kiss_fft_cpx));它给了我错误消息:“类型为void的值不能用于初始化类型为‘kiss_fft_ctx’的实体”。我正在使用VisualStudioC/C++win32控制台项目。谁能告诉我如何在这里正确使用malloc?谢谢! 最佳答案 你需要像这样转换返回类型:kiss_ff

c++ - 禁用 malloc 中的随机性

我正在运行以下简单的C程序:#include#includeintmain(intargc,char**argv){void*p=malloc(4);fprintf(stderr,"p==%p\n",p);return0;}不同的运行给出不同的结果:p==0x101c010然后:p==0x1ad9010然后:p==0xe77010等等。我记得,过去malloc是完全确定性的。所以可能从某个版本开始,一些随机性被添加到malloc。我现在在Ubuntu上使用gcc-4.6.3。有没有办法消除这种随机性? 最佳答案 如果变化是由地址空间

C++:malloc 等同于 new 吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Whatisthedifferencebetweennew/deleteandmalloc/free?我是c++小白,想知道是否memblock=(char*)malloc(currentByteLength);相当于memblock=newchar[currentByteLength]在C++中?

c++ - 类型转换 malloc C++

这个问题在这里已经有了答案:DoIcasttheresultofmalloc?(29个答案)关闭9年前。我有一些带有malloc语句的C代码,我想将它们与一些C++代码合并。我想知道什么时候以及为什么在C++中必须对malloc调用进行类型转换?例如:char*str=(char*)malloc(strlen(argv[1])*sizeof(char));

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*)