草庐IT

Pointers

全部标签

C++ 导致病毒错误?

阅读这篇文章后你可能会说我疯了,但当你阅读我在这里所说的内容时,我真的希望你相信我。为了了解可能导致内存泄漏或其他错误的情况,我编写了以下代码并尝试在我的电脑上编译,#includeusingnamespacestd;classgame{intx;public:char*s;charread();charmanipulation();};chargame::read(){charstring[100];cout>string;s=string;cout如果我在主程序中执行games.read(),我的防病毒软件BITDEFENDER会显示以下错误,“BITDEFENDER在c:/c++

c++ - std::vector 的替代方案,因为重新分配会使指向元素的指针无效

这可能是一个新问题(我是),但我已经尽可能多地搜索以找到以下问题的解决方案我有以下场景(当然是经过大量提炼的):classContainer{std::vectorobj;};classPointers{std::vectorobj_ptr;};我有一个例程,将Object类型的元素推回Container中的vectorobj,然后将指向同一元素的指针推回obj_ptr。总体思路是obj_ptr[i]==&obj[i]贯穿程序的整个生命周期。我遇到的问题是,每当obj的容量需要增加时,所有指针都会失效,从而使obj_ptr完全无用。我已经尝试过使用最大预期大小(大约10^7)的obj.

c++ - 节点和链表的问题

我有一个任务,我应该在其中创建方法来插入和删除双向链表中的节点。但是我对我的C++有点生疏。我的前指针和后指针出现错误。LinkedList.h#ifndefLinkedList_h#defineLinkedList_h#includeusingnamespacestd;structnode{node*prev;intdata;node*next;};classLinkedList{private://pointerstopointtofrontandendofLinkedListstaticnode*front;//theerroriscomingfromherestaticnode

c++ - 混淆 char *notes[] = {"Ab", "F#", "B", "Gb", "D"};和字符**

我真的很困惑这种类型的指针定义:char*notes[]={"Ab","F#","B","Gb","D"};`.我理解这里的notes是一个指向char的指针数组,我理解为notes的元素应该都是char类型变量的地址。我哪里错了?那么这是如何工作的呢?#include#includeusingnamespacestd;intmain(){char*notes[]={"Ab","F#","B","Gb","D"};cout还有什么是char**,它的意义是什么? 最佳答案 Inthissense,char*notes[]meansn

c++ - 如何将 double 转换为 float 指针?

我正在尝试将double指针转换为float指针,但我不知道正确的方法。这是我的代码#includeintmain(intargc,constchar*argv[]){//insertcodehere...float*f;doubled=10;f=reinterpret_cast(&d);d=20;std::cout我得到以下结果。RESULT:0Programendedwithexitcode:0如何正确地将double指针转换为float指针?ADD:我期望得到的结果是20 最佳答案 考虑:#include#includeusi

c++ - 删除指针

我想问一下,是不是动态创建一个指针,然后把指针地址改成别的东西,还是删除原来分配的空间?例如:intmain(){intc=50;//Memoryleakint*q=newint;q=&c;deleteq;}究竟是什么被删除或发生了什么?谢谢! 最佳答案 Whatexactlyisgettingdeletedorhappening?内存泄漏和未定义的行为。当您执行q=&c;时,您将失去对newint分配的内存的唯一跟踪。没有人为您跟踪这个,没有垃圾收集器,它只是丢失并且无法恢复。然后当您执行deleteq;(其中q分配给&c)时,您

c++ - 从 C++ 函数返回对象的正确方法是什么?

我很困惑:返回一个对象(但是这个对象是从函数中的局部变量复制过来的,这会消耗内存)返回一个指针(但是你必须记得在调用代码中删除它,这很奇怪)返回一个引用(但这是不可能的,因为这将是对函数局部变量的引用,一旦函数结束就会被删除)我正在寻找在基本C++中从C++函数返回对象的正确方法(没有库处理指针和自动释放内存)。我想知道这应该如何完成。谢谢 最佳答案 现代编译器通常实现(Named)ReturnValueOptimization,您引用的拷贝(并且逻辑上期望)未完成。自从VisualStudio2005(VC++8.0)以来,我对返

C++ 访问冲突写入位置 0x0...设置 int *

我已经查看了这里和其他地方的各种问题,但我仍然无法解释我遇到的访问冲突错误。“访问冲突写入位置0x00000000”对应于NULL指针,对吗?我已经声明了一个int指针,稍后我尝试在该位置设置一个值。我声明指针的时候不应该分配内存空间吗?如果这有点笨拙,请原谅我,但我更像是一个Java/AS3的人。这是我的部分代码...int*input;char*userInput[1];int*output;int_tmain(intargc,_TCHAR*argv[]){while(1){srand(time(0));*input=(int)(rand()%10);它在最后一行中断。

c++ - 为什么我的指针输出一个字符串而不是 C++ 中的内存地址?

这个问题在这里已经有了答案:cout(6个答案)关闭3年前。我正在研究一个使用指针的字符串类,但我只是难以理解我的print是如何工作的。功能在这里工作。具体来说,为什么cout输出字符串而不是它指向的动态数组的内存地址?我的理解是变量pString是一个指针。classMyString{public:MyString(constchar*inString);voidprint();private:char*pString;};MyString::MyString(constchar*inString){pString=newchar[strlen(inString)+1];strcp

c++ - C++ 如何处理作为参数传递的指针的清理?

我一直在研究C++如何处理作为参数传递的指针,但到目前为止我的问题还没有找到可靠的“是/否”答案。我是否需要对它们调用delete/free,或者C++是否足够智能以自行清除它们?我从未见过有人对传递的指针调用delete,所以我假设您不需要,但我想知道是否有人知道实际需要这样做的情况。谢谢! 最佳答案 用于作为参数传递的指针的存储将被清理。但是它们指向的内存不会被清理。例如:voidfoo(int*p)//pisacopyhere{return;//Thememoryusedtoholdpisclearedup,//butnott