草庐IT

信道分配

全部标签

window 如何为微软商城安装的应用分配启动快捷键(支持 win 快捷键)。可以借助开源的 AutoHotkey 实现

需求:为WindowsTerminal配置快捷键写完这篇文章后,才发现windowsternimal本身支持Win+`快捷键😨。开始之前,先找到对应程序在开始解决需求之前,得先获取到程序的路径,可以选择实际路径或者为其创建一个快捷方式。方式一:创建快捷方式:通过win+r运行shell:AppsFolder可以打开应用程序列表,微软商城安装的应用都可在里面找到找到需要的程序,在这里我们要找的是“ternimal”程序将其拖到桌面或其他任意位置即可创建快捷方式。(tips:拖拽文件时按下alt键可以更方便地创建快捷链接)方式二:获取实际路径打开pwsh(powershell)运行explorer

c++ - 我可以通过使用多线程更快地分配内存吗?

如果我创建一个保留1kb整数数组int[1024]的循环,并且我希望它分配10000个数组,我可以通过从多个线程运行内存分配来使其更快吗?我希望它们在堆中。假设我有一个多核处理器来完成这项工作。我已经试过了,但是它降低了性能。我只是想知道,我是不是编写了错误的代码,还是我对内存分配一无所知?答案是否取决于操作系统?如果可以,请告诉我它在不同平台上的工作原理。编辑:整数数组分配循环只是一个简化的例子。不要费心告诉我如何改进它。 最佳答案 这取决于很多事情,但主要是:操作系统你正在使用的malloc的实现操作系统负责分配您的进程可以访问

C++ 字符串/容器分配

这对于C++非菜鸟来说可能是显而易见的,但它让我有点难过——一个类的字符串成员是否在该类中分配了可变数量的空间?或者它只是在内部分配一个指向内存中其他空间的指针?例如。在这个例子中:classParent{public:vectorChildren;}classChild{public:stringName;}如果我创建一个“newParent()”并添加一些具有不同长度字符串的子项,它是如何在堆上分配的?Parent是4个字节,Child是4个字节(或者任何指针大小,加上固定大小的内部数据),然后是堆上其他地方的随机字符串堆?还是全部捆绑在内存中?我想一般来说,容器类型本身总是固定大

c++ - 为什么从 DLL 内部分配的内存在 FreeLibrary() 之后变得无效?

我今天遇到了这个错误,原来是因为我在调用FreeLibrary()后使用了一个字符串从我的DLL中分配。这是一个重现崩溃的简单示例。这进入DLL:voiddllFunc(char**output){*output=strdup("Hello");//strdupusesmalloc}这是在加载DLL的EXE中:voidexeFunc(){char*output;dllFunc(&output);std::strings1=output;//Thissucceeds.FreeLibrary(dll);std::strings2=output;//Thiscrasheswithaccess

c++ - 如何解决分配和释放不匹配的错误?

对于带有deletecname;的行,Cppcheck报告错误“分配和解除分配不匹配:cname”。我看不出使用我的代码版本有什么问题-它看起来可以正常工作。我的代码错了吗?我如何解决它?使用我的代码会有什么后果?if(lenght!=0){char*cname=newchar[lenght+1];inbin.read(reinterpret_cast(cname),lenght);cname[lenght]='\0';*ptr_string=cname;deletecname;} 最佳答案 是的,当您使用new…[…]语法分配数组

c++ - 如果缩小分配的内存大小,还要检查 realloc() 吗?

当您调用realloc()时,您应该在将返回的指针分配给作为参数传递给函数的指针之前检查函数是否失败...我一直遵守这条规则。当您确定内存将被截断而不是增加时,是否有必要遵循此规则?我从未见过它失败。只是想知道我是否可以保存一些说明。 最佳答案 realloc可以自行决定将block复制到新地址,而不管新大小是更大还是更小。如果malloc实现需要新分配以“缩小”内存块(例如,如果新大小需要将内存块放在不同的分配池中),这可能是必要的。这在glibcdocumentation中有说明。:Inseveralallocationimpl

c++ - 变量的 block 结构内存分配

for(inti=0;i在这里,我想知道变量x的内存是否会被分配两次,或者该值是否在退出第二个block后才重置并且内存只分配一次(对于x)? 最佳答案 从C编程模型的角度来看,x的两个定义是两个完全不同的对象。内部block中的赋值不会影响外部block中x的值。此外,循环的每次迭代的定义也算作不同的对象。在一次迭代中为任一x赋值不会影响后续迭代中的x。就实际实现而言,假设未进行优化,有两种常见情况。如果您打开了优化,您的代码可能会被丢弃,因为编译器很容易发现循环对它之外的任何东西都没有影响,除了i。两种常见的场景是变量存储在栈中

c++ - 在 C++ 中为 3D 数组分配连续内存

我能够分配连续内存以在C++中分配二维数组。我不知道如何为3D阵列做。我已经阅读了一些帖子,但我无法想出解决方案。#includeusingnamespacestd;intmain(intargc,char**argv){cout 最佳答案 具有P平面的3d数组,每个平面都有R行和C列将需要P*R*C元素。您可以立即分配它们,例如:Element*p=newElement[P*R*C];然后访问坐标(p,r,c)处的元素,您可以使用公式:intindex=(p*R+r)*C+c;为了让事情变得可读,一个简单的解决方案是创建一个类te

C++ 字符串重新分配,旧字符串是否正确释放?

我有一个C++类,它的成员是一个字符串,类似于:classPhone{stringname;voidfoo(){name=string("new_name");}}现在,在函数“foo”中,我将字符串重新分配给“new_name”。我的问题是:旧的空字符串会怎样?它是否正确“释放”?它还占用内存吗?现在我将Phone的构造函数中的字符串初始化为string("old_name")。这和之前的空字符串是一样的吗?旧字符串“old_name”在这里发生了什么? 最佳答案 是的,std::string为您管理内存。(这是它存在的原因之一!

c++ - 如果 malloc(STL 分配器等)请求分配 0 字节会发生什么

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:whatdoesmalloc(0)return?它是否返回零指针?行为是否规范?STL分配器怎么样?我用谷歌搜索,但找不到我要找的答案。编辑:链接的问题没有解释STL分配器。我还有另一个相关问题。如果尝试释放零指针会发生什么情况?allocator.deallocate(0,1);