草庐IT

guard-malloc

全部标签

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++ - std::lock_guard 有什么问题

我有简单的代码:第一个线程将std::strings推送到std::list,第二个线程弹出std::strings从这个std::list。所有std::list的操作都受到std::mutexm的保护。此代码将错误永久打印到控制台:"Error:lst.begin()==lst.end()"。如果我将std::lock_guard替换为构造m.lock()和m.unlock()代码将开始正常工作。std::lock_guard有什么问题?#include#include#include#include#includestd::mutexm;std::listlst;voidf2()

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

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++ - 如果使用 delete 而不是 free 删除使用 malloc 分配的内存怎么办

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

c++ - malloc 多个小时间或几个大时间更快?

当使用malloc分配内存时,对较小的数据block进行多次malloc还是对较大的数据block进行较少的malloc通常更快?例如,假设您正在处理一个包含黑色像素和白色像素的图像文件。您正在遍历像素并希望将每个黑色像素的x和y位置保存在一个新结构中,该结构还具有指向下一个和上一个像素x和y值的指针。使用指针为每个黑色像素的x和y值分配一个新结构来遍历像素通常会更快,还是通过遍历一次来计算黑色像素的数量,然后分配一个大的使用仅包含x和y值但不包含指针的结构的内存块,然后再次迭代,将x和y值保存到该数组中?我假设某些平台在哪个更快方面可能与其他平台不同,但每个人都认为什么通常会更快?