c++-请教一个VC++指针的问题

问题描述

请教一个VC++指针的问题

我要定义数组的话
char ddd[100];
char *ddd=new char[100];
请问下这两种 方式 ,第一种是系统自动分配的空间是吧?第二种的话必须NEW了之后
才会分配是吧?意思是指针必须手动分配空间吗?请问下这个NEW是在哪里分配的空间呀
和普通的系统自动分配的空间有什么区别呢?

解决方案

第一个是在堆栈上分配的,第二个是在堆上分配的。
第一个在函数退出的时候自动清栈,后者要用delete删除,否则内存泄漏。

解决方案二:

                    最大的区别就是后者需要程序员调用delete []add; 操作释放已经申请的空间,而前者系统会自动释放。new操作分配的内存如果忘记释放非常
    容易产生内存泄露。

解决方案三:

第一个是在栈里,第二个是在堆里,在栈里的出了函数就没有了,在堆里的只要不delete就一直还在。

解决方案四:

char odd[100]是定义时指定数组长度,所谓“静态存储分配”;new char [100],应该是动态分配空间,在堆内存(heap)。两者最大区别:前者元素必须常量,后者可以是变量。

解决方案五:

最好一个NEW对应一个delete不然程序大了,内存泄漏问题不好找,本人就有亲身经验T。T

解决方案六:

栈上分配和堆上分配空间。作用域不一样。

解决方案七:

char ddd[100]; 这个是自动分配的栈空间
char *ddd=new char[100]; 这个是手动分配的堆空间

解决方案八:

vc++实现的指针式时钟(赠送问题一个)

时间: 2024-11-02 17:03:17

c++-请教一个VC++指针的问题的相关文章

c++-请教一个VC++SOCKET的问题

问题描述 请教一个VC++SOCKET的问题 bind(ss, (SOCKADDR*)&ddd, sizeof(ss)); 请问下这句话中的,第二个参数为什么要加取地址呀?难道SOCKADDR*不足以把 ddd转换成指针吗?还要加个取地址,好像别的地方的用法都不用加取地址符 解决方案 建议参考官方资料.https://msdn.microsoft.com/en-us/library/ms737550 解决方案二: 进行类型转换,符合函数调用的参数.bind的第二个参数有类型要求.你需要对应的转换

vc++-请教一个VC++找图的问题

问题描述 请教一个VC++找图的问题 请问下,VC++能找图吗?就是先给定一个图片,然后在指定的地方找这个图片,就像按键 精灵那样一样的. 解决方案 可以,但是算法要自己写,没有现成的函数可以调用 解决方案二: 屏幕截图,然后比较每个像素啊,写一个图片比较的算法,笨点的算法大致思路是,获取被找图第一行像素,然后在屏幕截图上依次比较,找到后是第二行,第三行,,,图形处理可以用第三方图形库,或者用微软在Windows中自带的GDI/GDI+(图形设备接口) 解决方案三: 图片相似度比较,有很多图像处

access数据库-请教一个VC++连接ACCESS数据库的问题

问题描述 请教一个VC++连接ACCESS数据库的问题 我用VC连接有密码的ACCESS数据库死活连接不上,密码输入的是绝对正确,如果把密码去掉就连上了,请问是怎么回事呢? 数据库连接字符串如下: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:db11.mdb;Persist security info = FALSE;Jet OLEDB:Database Password=548654"; 解决方案 看上去字符串没啥问题.密码对不上只

请教一个VC++函数参数注释的问题

问题描述 请教一个VC++函数参数注释的问题 Void CAboutDlg::OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/) 比如说这个吧,这是我想添加右键菜单而创建的命令响应的函数,为什么一创建完这个函数,后面的两个参数就是注释着的呢?把注释去掉也能用,好像在低版本的VC++里面没有这样的问题吧,我用的是VC2013请教一下各位这是怎么回事呀? 解决方案 如果你不用参数,可以只定义参数类型,不给参数名,这是C语法允许的.

对象-请教一个MFC指针的问题

问题描述 请教一个MFC指针的问题 我看百度百科上面说的指针是一个对象,那请问下为什么咱们用指针的时候只是加个*号 就行了呢?为什么不用实例化这个对象呢? 解决方案 指针是指向的对象地址.*就是一个操作符.解引用.这样来访问对象.这个对象已经在其他地方实例化了.指针只是指向它 解决方案二: 一个关于指针的问题求教一个指针的问题:*pResult=0 解决方案三: 指针可不是对象. C++实例化对象不是new,new是分配内存. 在堆栈上分配,直接写 Class c(参数); 这就算实例化了.

源码-求教一个vc中float转化的问题!

问题描述 求教一个vc中float转化的问题! 50C buffer[0] = 0xc6;buffer[1] = 0xc3;buffer[2] = 0x90;buffer[3] = 0x30; 哪位大神能给了源码吗,谢谢了!!不会搞,急死了! 解决方案 请教一个VC问题 解决方案二: 数据的在计算机中不是用二进制表示的嘛,4位16进制就需要用32位二进制来表示:然后低字节存地位,高字节存高位,也就是传说中的"小端模式":这个不需要什么源码,理解到了就行:理解不到就去看书 解决方案三:

nvoke-请教一个VC调用JS的问题

问题描述 请教一个VC调用JS的问题 请教一个问题,我用VC调用JS, 我用的是WEBSOCKET长连接,我第1次调用SendData,会收到1个返回data, 第2次用,却会收到2个返回(正确的应该只有1个),第3次收到3个返回... 这个HTML在浏览器中使用是正常的,而我用VC调用的时候就不正常了,这是为什么? JS代码: //接收服务器返回值 socket.on('message', function(data){alert(data);}; //发送数据 function SendDa

vc-请教一个VC++point.x和point.y坐标的问题

问题描述 请教一个VC++point.x和point.y坐标的问题 今天看书有这么一段:if(point.x==-1&&point.y==-1) //如果是键盘激活的快捷菜单,则在窗口左上角的位置显示快捷菜单 {.........} 请问下这句话如何判断的是鼠标激活的快捷菜单还是键盘激活的快捷菜单呢? 解决方案 point 如果初始化值是 -1 & -1,则没有鼠标点击时,则认为是快捷键操作的. 解决方案二: //如果是键盘激活的快捷菜单,则在窗口左上角的位置显示快捷菜单 这不是说

新手请教一个c的问题,关于指针赋初始值

问题描述 新手请教一个c的问题,关于指针赋初始值 #includeint main(){ char *p=NULL; scanf(""%s""p); printf(""%s""p); return 0;}这段代码我在ios的终端下运行就提示Segmentation fault:11但是不给p赋初值的话..改称char *p;反而好使了..为什么...请教别人说是编译器的问题.能不能稍微详细的说一下为什么.. 解决方案 要先弄清