草庐IT

c++ - KDevelop中如何查看变量的值?

我正在使用KDevelop作为我的C++程序的IDE。我的程序中有一个数组charbuffer[1024]。读取数据到缓冲区后,我想手动检查它。但是在左侧面板中,我需要读取数组一个字符一个字符。有什么方法可以一次性获取数组的内容吗? 最佳答案 使用KDevelop中提供的GDB工具View。在KDevelop4.6中,Window->AddToolView->GDB将在KDevelopIDE的底部/左侧/右侧打开GDB工具View。调试您的程序,在必须检查变量值的位置,在对应于GDBcmd的文本框中输入printvariable_n

c++ - 具有固定插入次数的 Map 的内存分配

我想将n个元素插入到一个映射中,其中n是提前已知的。我不想在每次插入时分配内存。我想要一开始就分配所有内存。有没有办法做到这一点?如果是这样,如何?编写某种内存分配器会有帮助吗?我运行了GMan的代码并得到了以下输出。GetMem从对“new”的调用中打印出来,而FreeMem从对delete的调用中打印出来。size是请求的字节数,ptr是返回的指针。显然,分配/释放是在插入期间进行的。你怎么解释这个?GetMem大小40,指针0x8420008GetMem大小40,指针0x8420038GetMem大小120,指针0x8420068GetMem大小120,指针0x84200e8Fr

c++ - 优化C++中类实例的内存布局

将应用程序从32位升级到64位会增加对象的指针大小和内存占用量。我正在寻找尽可能减少对象内存占用的方法。对于POD结构,我转储了该结构的内存布局,以弄清楚如何打包成员并减少编译器填充。有没有办法弄清楚类实例等非POD对象的内存布局?我怎样才能实现类似于打包类对象的东西?谢谢,丹 最佳答案 您可以使用GCC的-Wpadded来通知您添加填充的位置,然后根据该信息重新排序,在某些情况下减小大小。强制打包数据对于内存中的表示不是一个好主意。 关于c++-优化C++中类实例的内存布局,我们在St

C++ 运行时动态内存大小

这是我一直想知道但从未找到答案的问题:为什么当您在堆上分配某些东西时,您无法仅通过指针确定它的大小,但您可以仅使用指针删除它,而且C++不知何故知道要释放多少字节?这和它在堆上的存储方式有关系吗?此信息是否存在但未被C++公开?也许这应该是一个单独的问题,但我认为它非常相关,所以我会在这里问:为什么必须使用delete[]删除动态元素数组,而不是简单的delete命令;为什么C++需要这些附加信息才能正确释放所有内存? 最佳答案 当进行分配时,紧接在[或者,技术上,在完全不同的地方,但在最常见的情况下]之前的一小段内存将存储分配的大

c++ - 将数据从未对齐结构的数组移动到 C++ 中的对齐数组

将数据从CameraSpacePoint数组移动到PointXYZ数组的最佳方法是什么?structCameraSpacePoint{floatX;floatY;floatZ;};__declspec(align(16))structPointXYZ{floatx;floaty;floatz;};constexprintBIG_VAL=1920*1080;CameraSpacePointcamera_space_points[BIG_VAL];PointXYZpoints_xyz[BIG_VAL];我的解决方案:CameraSpacePoint*camera_space_points_

c++ - C/C++ 转换为程序集,低级内存行为 : how is it done?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭12年前。我在游戏编程学校学习,我们必须学习代码速度,这似乎很重要。在使用C/C++编程时,是否有任何需要注意的教程或列表?我想知道很多事情,例如为什么C的默认行为是通过传递数据而不是引用/地址,或者编译器如何将引用转换为汇编程序,或者C循环如何将自身转换为JMP。我对此很担心,因为python使用了另一种方式,但另一方面,python不使用运算符来复制值,而是使用语法繁重的函数。我真的不认为知道如何在汇

c++ - 如何知道C++中的内存使用情况

我有一个由VisualStudio2010运行的C++程序,我如何监控程序的内存使用情况?是否存在简单的API,例如我可以调用clock_tstart1和start1=clock();来监控我的程序的时间使用情况。谢谢:) 最佳答案 内存管理不像计时一样是个简单的问题,跟踪起来肯定更复杂。我建议您先查看其他类似的StackOverflow帖子:Howtoanalyseprogram'smemoryusageinVisualStudio2010?Howdoyoudetect/avoidMemoryleaksinyour(Unmanag

c++ - 为什么 shared_ptr 签名与数组的 unique_ptr 不同?

std::unique_ptrp(newint[10]);//okstd::shared_ptrp(newint[10]);//Errorshared_ptrsp(newint[10],[](int*p){delete[]p;});//Ok,writingcustomdeleterfor//arraysinceshared_ptrwillcall//deletebydefault.与unique_ptr相比,数组的shared_ptr签名有什么不同的具体原因吗?如果两个api都遵循类似的签名,那就更简单了。 最佳答案 unique_

c++ - 读取符号时 gdb 段错误

当尝试使用程序运行gdb时,它会在读取符号时出现错误。当我运行时:gdb/home/user/path/to/program.exe我得到:GNUgdb(Ubuntu7.7-0ubuntu3.1)7.7Copyright(C)2014FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"a

c++ - 在 C++ 构造函数中分配内存的正确方法是什么?

这是在C++构造函数中通过new分配内存的正确方法。参数列表中的第一种方式:classBoda{int*memory;public:Boda(intlength):memory(newint[length]){}~Boda(){delete[]memory;}};或者在构造函数体中:classBoda{int*memory;public:Boda(intlength){memory=newint[length];}~Boda(){delete[]memory;}};谢谢,BodaCydo。 最佳答案 我认为最简单的方法是使用boos