Java内存疑问 [问题点数:20分]

Bbs1
本版专家分:0
结帖率 0%
Bbs2
本版专家分:319
Bbs2
本版专家分:180
Bbs1
本版专家分:0
Bbs5
本版专家分:3694
Blank
蓝花 2019年6月 Java大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs2
本版专家分:139
Bbs1
本版专家分:10
C++内存管理方面的疑问
这个问题要从我看的一篇关于<em>内存</em>池的文章说起.之前发过一贴问过一些<em>内存</em>释放安全上的问题,经过一些方法测试,认为没有<em>内存</em>泄露了.于是又产生了新的<em>疑问</em>希望高手能帮助解答.....rn VC<em>内存</em>检测的方法我采用了 rn #ifdef _DEBUGrn#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)rn#elsern#define DEBUG_CLIENTBLOCKrn#endifrnrn#define _CRTDBG_MAP_ALLOCrn#include rn#include rn#include rn#include rnrn#ifdef _DEBUGrn#define new DEBUG_CLIENTBLOCKrn#endifrnrn然后在要检测的代码前面加上:rn_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );rn在后面加上:rn_CrtDumpMemoryLeaks();rnrn 该方法我并不知道是不是有什么缺陷,像是:我new了一块空间,同时我DLETE了它,程序不会有泄露输出,如果我NEW了一块空间并且在最后调用 _CrtDumpMemoryLeaks(); 的时候没有调用DELETE它会输出什么位置申请的<em>内存</em>没有释放.我的<em>疑问</em>就成了:rn [color=#FF0000]* 该方法是否只是检测了NEW 与 DELETE的配对,而不检测是否真的完全释放了<em>内存</em>?(比方说:我申请了1024个字节,只释放了512个字节,是否会输出泄露呢?我不知道如何去写这样的代码来测试这个问题,请高手原谅.)[/color]rnrn 第二个问题是关于程序运行的.我知道<em>内存</em>如果有没有释放的话程序会持续增长,今天我在测试自己的<em>内存</em>池实现的时候,运行代码的时候发现,程序进行了一次增长,然后就固定在一个数值,并没有恢复到程序刚开始执行时的<em>内存</em>标准.rn 然后我运行了网络中一些<em>内存</em>测试方法,在循环执行的时候,发现每执行一次测试,<em>内存</em>就有一个固定增长.rn [color=#FF0000]* 为什么程序在持续执行的过程中本该是安全的操作会造成程序执行使用的<em>内存</em>空间的扩大呢?[/color]rnrn 如果这些问题比较简单.前辈们可以不回答.告诉我该看什么书就可以了.麻烦大家了....rnrn 自己的<em>内存</em>池采用了重载 operator new and delete 操作符号.rnvoid* operator new(size_t nSize,USHORT nCount,USHORT nUnitSzie)rn return ::operator new(nSize+ nCount * nUnitSzie);rnrnrnvoid operator delete(void* lp,USHORT,USHORT)rn ::operator delete(lp);rnrnrnvoid operator delete(void* lp,size_t)rn ::operator delete(lp);rnrnrn <em>内存</em>申请测试的采用申请操作分别是:rn malloc new VirtualAlloc HeapAlloc
关于内存垃圾回收的疑问
这几天看了一下windows的<em>内存</em>分配与回收机制,以及jvm的垃圾回收机制,之前也查找了很多资料但还是感到有些不解,希望好心人能够给予帮助。rn 我的问题如下:rn jvm的垃圾回收机制需要windows操作系统的参与吗?[color=#FF0000]是[/color]windows给jvm分配一个固定的堆空间,然后把堆的分配和回收交给JVM(也即有jvm管理堆的空闲链表和使用链表),最后当jvm退出时由windows系统回收之前分配给jvm的堆空间,[color=#FF0000]还是[/color]jvm通过windows系统调用来间接管理堆的空闲链表和使用链表。rnrnrn
内存free的疑问
...that free memory remains allocated to the process. However, if it’s not beingrnused, the Linux memory manager will be able to page it out from physical memory to swap space,rn...rnRemember that once you’ve called free on a block of memory, it no longer belongsrnto the process. It’s not being managed by the malloc library.rnrn出自beginning linux programming的Data Management小节,不大理解allocated to the processrn却又no longer belongs to the process,还有就是所谓的linux memory manager和malloc libraryrn的关系,请指教
字符串内存初始化的疑问
malloc申请一块<em>内存</em>后rn一般要 memset初始化为0(也就是'\0')rn选择这个初始值是为了:求字符串实际长度采用的函数strlen,判断字符串结束的标志就是'\0'。rnrn问题就是如何确保我给这块<em>内存</em>赋予的值中不含有这个字符呢(也就是值0)?
关于内存疑问
首先说一下我的理解,CPU将外存的程序与数据的一部分移动到<em>内存</em>上来运行,当代码区的指令全运行完之后,移入新的指令,栈的内容可能也需要改变.我的<em>疑问</em>是这个新指令区的移入<em>内存</em>动作是谁完成的呢,启动阶段是启动文件完成了第一次的移动,那么运行阶段呢,编译阶段加入的语句吗.也不是mmu和操作系统吧,无操作系统不开mmu的情况不也是在<em>内存</em>中运行吗.
vector内存连续性的疑问
[code=C/C++]rnrn假设:vector v 中已经有4个元素了。 这4个元素耗去了 16字节<em>内存</em>。rnrn此时 <em>内存</em>池中只有2个8字节的块。rnrn如果 有这样的一句代码:v.reseve(8); 意味着,v还需要16字节。rnrnrn由于16字节小于128,所以进入第二级配置器。rnrn问题:<em>内存</em>池会将这2个8字节的块 直接拨给vector吗?rnrnrnrn不会给vector,因为这2个8字节的块,直接拨给v, 但是 很可能 v以前的<em>内存</em>和 这2个8自己的<em>内存</em> 没有连续,rnrn那么是无法使用的。 那么stl如何判断 vector需要连续性<em>内存</em>呢??rnrnrn[/code]
关于内存使用的疑问
这是我在书上摘下来的:rnrna 的内容可以改变,如a[0]= ‘X’。指针p 指向常量字符串“world”(位于静态存储区,内容为world\0),常量字符串的内容是不可以被修改的。从语法上看,编译器并不觉得语句p[0]= ‘X’有什么不妥,但是该语句企图修改常量字符串的内容而导致运行错误。rnchar a[] = "hello";rna[0] = 'X';rncout << a << endl;rnchar *p = "world"; // 注意p 指向常量字符串rnp[0] = 'X'; // 编译器不能发现该错误rncout << p << endl;rnrn编译无错,程序运行出错。(p[0]='X';)rn<em>疑问</em>:为什么 a[0]="X"; 不出错,它不也是常量字符串吗?
static 占用内存疑问??
[color=#0000FF]rnrnrnrn[size=16px]rnrnrn说法一: static 在类编译的时候 , 所有带static的属性与方法 都被加栽了!~~ rnrn 加栽了 肯定要占用<em>内存</em>...rnrn[/size][/color]rn[color=#FF0000]rn[size=16px]rnrn<em>疑问</em>一: 哇!~ 那要那样的话!~, 电脑上所有的class文件 带static属性的都被加栽中, 不会释放吗?. rnrn 那得浪费多少<em>内存</em>啊!?. 对此始终不解!!! 而且static听说不会被垃圾回收!不知道是真是假!rnrn 是否所有带static属性的class文件都在吃着我电脑的<em>内存</em>呢?.. 即使我没有执行它!rn[/size]rnrn[/color]rnrnrn[color=#0000FF]rnrn[size=16px]rnrn说法二: static 是放在栈中! ,一般变量会通过拷贝方式传值,而static应该是传引用.<em>内存</em>中效率是要高许多的,他又只产生一次,应该说他是即省时间又省空间rn[/size]rnrn[/color]rnrnrn[color=#FF0000]rnrn[size=16px]rnrn<em>疑问</em>2: 这就更迷糊了!~ static的跟栈还有着关联吗?. 对static更是不解了!rnrnrn补充: 能否再补充一下 加载 与 执行 的区别吗?.. rn[/size]rnrn[/color]rnrnrn[color=#FF00FF]rnrnrn诚 心 请 教 ! 十 分 感 谢!rn[/color]
数据库服务器吃内存疑问
最近用户反映页面读取插入数据速度比以前慢很多rnrn我看了数据库服务器rn发现物理<em>内存</em>总共48G,已经占用了46个G。。。rnrn1.我想问 为何<em>内存</em>会吃的那么厉害rnrn2.应该如何优化调整rnrn谢谢
释放内存错误?? 疑问
用maolloc申请了一块<em>内存</em>,rnunsigned char* temp = (unsigned char *) malloc(2*h * sizeof(unsigned char));rnrn执行了一个函数后,用free(temp)释放该<em>内存</em>,但是出现错误,调试发现,错误为:rnmemory check error at 0x0152428E = 0xF1, should be 0xFD.rnmemory check error at 0x0152428F = 0xD9, should be 0xFD.rnrn大侠指教,什么原因阿?
内存代码区的疑问
代码被装到代码区后,之后会被移除吗?如果不会,岂不是程序运行后代码区越来越大?
关于内存的一点点疑问
各位童鞋:rn 我有几个关于<em>内存</em>方面的问题,请了解的童鞋指教指教。rn1、堆<em>内存</em>,是分配给进程的么?是不是在这个进程结束之后,与之对应的对<em>内存</em>就释放掉?rn2、编译器是如何在编译阶段确定程序或者数据的地址的rn3、开始运行一个程序,操作系统是如何创建一下进程的rn谢谢!
读取文件内存疑问
在读取到一段文件<em>内存</em>时候 00 00 00 0D rn把它读取到一个unsigned int 当中时,显示是0x0D000000rn怎么会这样呢?怎么解决
关于内存疑问!
我家有台三年前配的台式电脑,<em>内存</em>当时只配了256M,是DDR333的,现在想把<em>内存</em>升级,加一根512或者1G的,但是世面上DDR333很少了,问了一个做数码产品的朋友,他说DDR400的可以和DDR333的混合插在主板上。我的主板是技嘉的,型号忘记了!我想请问下现在成都还有DDR333的<em>内存</em>卖吗?如果没有我买DDR400的与DDR333的混合使用会出问题吗?
托管内存的一点疑问
c++写了一个函数,通过dll导出后供c#调用。rnvoid writeMem(int* pMem)rnrn pMem[1...n] = 0;rn ……rnrnrn在c#中,声明:rnpublic static extern void writeMem(int[] pMem);rnrnrn调用:rnint[] pMem = new int[50];rnwriteMem(pMem);rnrn那c#的GC会不会在执行writeMem的时候进行回收,造成<em>内存</em>错误?
tomcat内存设置 疑问
比如说我linux 服务器 CentOS 6.5 64位系统rnrncpu 8核 <em>内存</em>8Grn在tomcat catalina.sh 里面添加rnJAVA_OPTS="-server -Xms?m -Xmx?m -XX:PermSize=?M -XX:MaxPermSize=?m"rnrn该填写多少合理?
关于静态方法占用内存内存疑问
关于静态方法占用<em>内存</em><em>内存</em>的<em>疑问</em>rnrn[code=Java]rnrnpublic static String s1 = "test";rnpublic void static testStaticMethod() rn public String s2 = "sizea";rn public String s3 = "sizeb";rnrnrn[/code]rnrnrn对于s1我们知道在s1在首次初始化后只在<em>内存</em>中只占用一份s1的资源。rnrn那么对于静态方法又是如何呢?静态方法存储在<em>内存</em>中的东西是什么?rnrn比如上面的代码在首次初始化testStaticMethod后s2, s3所占的空间也存在<em>内存</em>中并且只有一份?
[Java 内存]Java内存组成
本人大二学生党,对Java理解有所不足,敬请谅解。 动机写了这么多年的Java代码,总要了解一些底层的知识吧!(才2年)了解Java<em>内存</em>模型,可以解决一些莫名其妙的错误。而且使得程序更好更快的运行。如何管理1)Java 的<em>内存</em>管理就是对象的分配和释放问题。这是2个部分。 分配:程序员通过new关键字来给对象分配<em>内存</em>空间(除去8种基本数据类型) 释放:从根节点出发,能够达到的节点都是可达的;GC
stl::vector占用内存疑问
比如:rnstruct MyStructrnrn double m_data[ 36 ];rn;rnvector< MyStruct > m_vecTest;rnrn在资源管理器观察<em>内存</em>占用1540Krnrn加上rnm_vecTest.reserve( 1000000 );rnrn在资源管理器观察<em>内存</em>占用2104Krn增加了564K,rnsizeof(MyStruct)得到288,那么1000000*288/1024=281250rn可见不对等,那么我是否可以初步判断reserve并没有申请足够的<em>内存</em>。rn继续rn再加上rnfor ( unsigned i = 0; i < 5000; ++ i )rn rn MyStruct data;rn m_vecTest.push_back( data );rn rn在资源管理器观察<em>内存</em>占用3512Krn增加了1408Krn计算5000*288/1024=1406.25rn忽略误差,可以认为<em>内存</em>增长量保持一致。rnrn我的问题是,如果reserve并不申请足够的<em>内存</em>,那么增加这条语句花的那么多<em>内存</em>用来干嘛了?都说reserve可以用来预留空间,既然它都不申请足够的空间那么它如何来预留空间?假如没有预留空间那么哪怕动态增长量还没有达到设置的预留量也必然会达到瓶颈进而需要重新分配<em>内存</em>块以及移动拷贝数据,那么这reserve又有啥用?rn望大神们解答……rn
Tensorflow / caffe内存使用疑问
Caffe tensorflow和keras跑动程序时限制GPU所占显存和强制使用cpu GPU优化 - Caffe 显存优化[译]
内存申请和释放的疑问
1.用new申请<em>内存</em>时返回NULL,说明失败,怎么不抛出异常呢?看msdn上说要抛出bad_alloc的.rn2.以下代码rnunsigned char *buffer = new unsigned char[sizeof(string)];rnstring *pstr = new (buffer) string;rn rn这样申请的的<em>内存</em>如何释放?rn我发现delete pstr, buffer;和delete pstr;都可用,不知应该用哪个?rnbuffer和pstr的值是相等的,如果应该用delete pstr, buffer;能不能改成delete pstr, pstr;rn之后还有没有必要delete [] buffer;?
关于那1m内存疑问
实模式下486可以访问1m<em>内存</em>.可是其中那640k和384k各是怎么回事?rn我不是很清楚.384k那部分是不是集成在主板上的rom里了?rn640k那部分在哪?假如我插一根128m的<em>内存</em>,是不是由这个<em>内存</em>条提供的?rn<em>内存</em>的起始地址从那里算起?从rom吗?rn 疑惑中......
Hibernate与JDBC 内存比较的疑问
JDBC读取数据的方式和Hibernate的List方式是一样的(这跟JDBC驱动有很大关系,不同的JDBC驱动,结果会很不一样),这从观察<em>java</em>进程<em>内存</em>变化可以判断出来,由于JDBC不需要像Hibernate那样构造一堆Cat对象实例,所以占用JVM<em>内存</em>要比Hibernate的List方式大概少一半左右。 这句话对吗?怎么出来的一半呢? ...
D3D内存疑问: 访问速度差异?
我使用 CreateTexture(... D3DPOOL_SYSTEMMEM ....)。 应该是分配在系统<em>内存</em>中 。rnrn使用LockRect获得指针,读取内容时,发现CPU略高。rn后来我试着改为 new 来代替 LockRect获得指针. 发现CPU占用减少了。rnrn这两种<em>内存</em>有何差别?难道系统<em>内存</em>还有差别?rn
内存的管理"的疑问">菜鸟关于"内存的管理"的疑问
怎么用"指针"和"引用"管理<em>内存</em>啊?/rn那位大侠指点一下思想,,不胜感激rn(小生是新手)
关于存储过程内存占用的疑问
我要在存储过程拼接SQL语句,由于无法预见最终拼接出的SQL语句的长度,所以在声明变量时,我尽可能将其长度设置长点,比如:rn[code=sql]declare @sql nvarchar(1000)[/code]rn但这样,就会占用更多的<em>内存</em>,我想请问,存储过程执行后,变量所占用的<em>内存</em>会即使释放吗?
指针与内存之间关系的疑问
问题是这样的:rnrn1、指针是BYTE类型的,8位的,为什么经常看见访问<em>内存</em>,比如OX78027581出错?OX78027581应该是32位的rnrn2、定义一个int的变量a,那么在<em>内存</em>中申请连续4个地址存放这个变量。rn 再定义一个指向a的指针p,如果把p转化成BYTE* (经常看见把某些指针转化成BYTE*),那么p的下一个地址p+1指向值是什么?rn rn
Delphi 关于内存错误的疑问
小弟写了这么一段。总是莫名其妙的提示<em>内存</em>错误。请各位大大帮帮看看到底是哪里的问题rnrn[code=delphi]procedure TBackup.Execute;rnconstrn Model = 'mm-dd hh:nn:ss';rnvarrn FileList: TStrings;rn FindResult: Integer;rn FSearchRec: TSearchRec;rn Dir, Volume, Time: string;rn Handle: Thandle;rnbeginrn FreeOnTerminate := True;rn Dir := lj2 + '\ConanSandbox\Saved\';rn FileList := TStringList.Create;rn tryrn Form1.ListBox1.Clear;rn FindResult := FindFirst(Dir + '*.db', faAnyFile + faDirectory, FSearchRec);rn while FindResult = 0 dorn beginrn if Length(LowerCase(FSearchRec.Name)) = 16 thenrn beginrnrn Handle := Fileopen(Dir + LowerCase(FSearchRec.Name), 0);rn Time := FormatdateTime(Model, Filedatetodatetime(Filegetdate(Handle)));rn Fileclose(Handle);rn // Time := FormatdateTime(Model, FileDateToDateTime(FileAge(Dir + LowerCase(FSearchRec.Name))));rn Volume := IntToStr(FileSizeByName(Dir + FSearchRec.Name));rn FileList.Add(LowerCase(FSearchRec.Name) + ' Time:' + Time + ' FileSize:' + Volume);rn end;rn FindResult := FindNext(FSearchRec);rn end;rn FindClose(FSearchRec);rnrn FindResult := FindFirst(Dir + '*.db', faAnyFile + faDirectory, FSearchRec);rn while FindResult = 0 dorn beginrn if Length(LowerCase(FSearchRec.Name)) = 17 thenrn beginrn Handle := Fileopen(Dir + LowerCase(FSearchRec.Name), 0);rn Time := FormatdateTime(Model, Filedatetodatetime(Filegetdate(Handle)));rn Fileclose(Handle);rn // Time := FormatdateTime(Model, FileDateToDateTime(FileAge(Dir + LowerCase(FSearchRec.Name))));rn Volume := IntToStr(FileSizeByName(Dir + FSearchRec.Name));rn FileList.Add(LowerCase(FSearchRec.Name) + ' Time:' + Time + ' FileSize:' + Volume);rn end;rn FindResult := FindNext(FSearchRec);rn end;rn Form1.ListBox1.Items := FileList;rn exceptrn Form1.BackTime.Enabled := False;rn writeWorkLog('错误:#300001');//自己写的日志,记录错误出现的时间。rn end;rn FindClose(FSearchRec);rn FileList.Free;rnend;[/code]rnrnrn各位大大帮帮啊。
SQL版本占用内存疑问
原系统正在使用win2003 X86企业版+SQL2000SP4,SQL占用<em>内存</em>1.7G后就无法再提升了。rnrn请问rn1:系统升级到win2008R2企业版+SQL2005SP4 X86,<em>内存</em>16GrnSQL2005可以支持使用大<em>内存</em>吗?应该如何设置呢?rnrn2、如果SQL2005使用X64会不会好一些呢?rn如果数据帐套在SQL64的使用过,可以降回32位的SQL2005吗?
web应用CPU和内存的联系疑问
我现在的web应用高峰期<em>内存</em>占用是50%左右,8G<em>内存</em>,我想知道,如果我把<em>内存</em>升级到16G,会不会提高CPU的处理速度?
关于数据类型内存存储方式的疑问
问问各位大神,一个整型数据是以4个字节储存数据,如果我储存的是10进制数10,当我用指针寻找第一个字节所储存的数据时它为00000000,而最后一个字节为00001010,感觉像是从后往前储存,为什么会是这样呢?
多路归并排序需要的内存疑问
问题一:前面学内部排序的问题时有个二路归并,讲外部排序有个多路归并,其实他两本质是一样的。rn是不是可以这样说归并排序(二路或者多路)既可以用于内部又可以用于外部。rn问题二:归并排序空间复杂度为O(n),最后一轮排序也需要N个元素都加入<em>内存</em>的啊,既然如此,他怎么能用于外部排序啊
java疑问
本人不懂 <em>java</em>,是C/C++程序员,请问<em>java</em>的高手,<em>java</em>能不能实现操作系统内核(winddows,linux)编写,根据我的理解,应该是不可以的,是不是这样,不需要解释理由!
java 疑问
[code="<em>java</em>"]rnpublic List getValues(Class c) throws Exceptionrn List values = new ArrayList();rn T o= c.newInstance();rn values.add(o);rn return values;rn rn[/code]rn这个是从一个类文件拷出来的代码 rnList 为什么要这样写 rn我感觉[code="<em>java</em>"]rnpublic List getValues(Class c) throws Exceptionrn List values = new ArrayList();rn T o= c.newInstance();rn values.add(o);rn return values;rn rn[/code]rn这样写就是正确的 rn事实拷出来的代码在新的类里确实正常rn关键是在原类会报错rnrnMultiple markers at this linern - T cannot be resolved to a typern - T cannot be resolved to a typern--Eclipse 提示rn非常不理解 为什么
Java疑问
下面这部分代码12和14行有问题,请问各位问题出在哪呢?rnpublic class Address rn private String name;rn private String Address1;rn public Address(String a,String b)rn rn name=a;rn Address1=b;rn rn public static void output()rn rn System.out.print("输出姓名:");rn System.out.println(name); //第12行rn System.out.print("输出E-mail地址:");rn System.out.println(Address1); //第14行rn rn
java疑问
假如有一个文件a.txt,假设里面有任意的10个数字,如何编写程序读取这个文件,然后把10个数字从小到大排序
Java 疑问
高手, 我是<em>java</em>新手,为什么文件名必须和类名相同啊
关于java 自动释放垃圾内存,一点小疑问
我知道<em>java</em>有自动释放垃圾<em>内存</em>的机制.rnclass1 a=new class1();rn程序结束都没有写a=null;rn那么<em>java</em>在垃圾回收时,会不会回收a的<em>内存</em>呢?
JAVA内存监控 JAVA内存监控
JAVA<em>内存</em>监控 JAVA<em>内存</em>监控 JAVA<em>内存</em>监控 JAVA<em>内存</em>监控 JAVA<em>内存</em>监控 JAVA<em>内存</em>监控
Java内存
Java<em>内存</em>分布图     
java内存
<em>java</em>的<em>内存</em>需要划分为5个部分: 1.栈<em>内存</em>(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈<em>内存</em>中运行 局部变量:方法的参数,以及方法括号中的变量 作用域:一旦超出作用域,立刻从栈<em>内存</em>中消失。 2.堆<em>内存</em>(Heap):凡是new出来的东西,都在堆<em>内存</em>中。 ...
java内存
1、栈:存储都是局部变量。只要是在方法中定义的变量都是局部变量。 一旦变量的生命周期结束该变量就被释放。 2、堆:存储new关键词创建出来的数组或实体(对象)(new 关键词创建的)      每一个实体都有一个首地址值。      堆<em>内存</em>的变量都有默认的初始化值。不同类型不一样,           int——0          double——0.0           boolean——f...
java 内存
Java <em>内存</em>是怎么分配的!除了栈,堆,还有什么啊!像那些代码是分配在那里的!比如rnclass Personrn int a;rn static int b;rnrn System.out.println();rnrn请问 class Person System等等是怎么分配的啊rn
【Java】内存
常量池(Constant Pool)来缓存,第一次使用字符串、类、方法、接口,保存在.class文件中,再使用时从常量池中直接使用。
Java 内存
分析Java<em>内存</em> 学习在于总结 分析对于<em>java</em>来说,<em>内存</em>这一概念对于开发者来说是透明的。Java中的东西都是运行在Java的虚拟机上的,因为Java虚拟机的存在,Java才有了如此之好的跨平台性。但是也就是因为虚拟机的存在,对访问Java的<em>内存</em>就又多了一层障碍,对于开发者来说<em>内存</em>几乎可以说是根本不能够被访问到的。在Java中,也并不希望开发者去访问<em>内存</em>,访问<em>内存</em>并不是安全的,所以根本没有提供给
JAVA内存
Java运行时的数据区一般分为JAVA栈,本地工作栈,程序计数器,堆和方法区。其中: JAVA栈:存放局部变量,基本类型变量的值,对象的引用等。 堆:new出来的对象。 方法区:方法区中又有常量池以及静态区等。方法区存放方法,字段,类的信息等。其中静态变量存在静态区。成员方法不占用<em>内存</em>,在使用的时候压入栈。 ...
【Java】Java内存参数配置
JVM<em>内存</em>配置参数-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 Xmx:表示虚拟机的最大可用<em>内存</em>, Xms10240m 初始堆大小即最小<em>内存</em>值 Xmn表示年轻代大小。 XXSurvivorRatio=3表示两个Survivor区与一个Eden区为2:3(即Eden:FromSurvivor:ToSurvivor=3:1:1)。Surivior
关于递归程序消耗内存疑问
用masm写的递归程序,书上说程序运行时CPU使用率会达到100%,<em>内存</em>占用量不断增长,直到程序卡死.我试验了一下,书上说的没错,除了没见<em>内存</em>增长,为什么?rn见图[img=https://img-bbs.csdn.net/upload/201505/19/1432028228_699123.png][/img]程序如下:rnrn[code=c].386rn.model flat,stdcallrn.stack 0ffffffffhrnExitProcess proto,ExitCode:dwordrnEndless protornWriteString protornrn.datarnendlessStr byte "This recursion never stops",0rn.codernmain PROCrn call Endlessrn INVOKE ExitProcess, 0rnmain ENDPrnrnrnEndless PROCrn mov edx,offset endlessStrrn call WriteStringrn call Endlessrn ret ; never reaches this linernEndless ENDPrnEND main[/code]
8086中32位内存变量的使用疑问
[code=Assembly]rndseg segmentrnvar dd ?rndseg endsrnrncseg segmentrn assume ds:dseg, cs:csegrnstart:rn mov ax, dsegrn mov ds, axrn rn rn mov var, 0ffffffffhrn rn mov ah, 4chrn int 21hrncseg endsrn end startrnrn[/code]rn这里的var变量声明位32位,但是使用mov var, 0ffffffffh会警告rn[img=http://blog.chinaunix.net/photo/44198_071106231907.jpg][/img]rn[img=e:\c.jpg][/img]rn怎样才能将一个立即数存如这个<em>内存</em>空间.rn先谢谢了
关于使用delete(free)释放内存疑问
imfree使用malloc(new)申请<em>内存</em>,当申请的<em>内存</em>是一个数组时,数组的大小在编译时不一定确定,而释放该<em>内存</em>块时只需要简单地将指针传给free(delete) ,那么free如何知道该释放多少的空间呢,c/c++是否在<em>内存</em>分配上有一套隐含的机制:记录着每次申请的大小以及起始地址,以便于释放时的查询?
关于wince在内存定位的疑问请教
Uboot 负责主板的底层启动 载入WINCE到特定的RAM位置 rn然后跳转到RAM中开始运行 (?1 PB编译wince的时候要不要指定wince的启动地址呢?)rnWince的运行过程中调用底层硬件是通过软件版BSP进行调用,这样的做法就是可以使得wince与硬件无关 (?bsp应该是放在编译时候固定的位置,然后再wince的硬件操作函数指针指向bsp的对应的操作函数)rnSDK因为每个硬件2440的主板的资源不同,wince的配置不同,导致了在wince系统里面运行程序的时候所需要的底层程序的不同,SDK就是针对不同配置的wince由PB生成的不同的开发包,以供EVC开发应用程序调用(说的对嘛?)rnEVC生成的应用程序在wince中调用,由于程序启动的顺序不同,应用程序可能每一次分配到的ram的位置都不尽相同,那么应用程序的跳转和调用是应该不是决定固定的RAM吧?如果是固定地址,难道是wince载入程序的时候会对应用程序进行再一次编译?如果不是固定地址,难道应用程序里面的东西都是相对地址 好像有不大可能,或者事实0地址变换了? rn
有关 std::string 释放内存疑问.
string txt[65535];rnrnrn分别对txt[0].....[65535]赋值(10kb的文本),赋值后,比如我在某个时刻 string[0]....[10000]都不需要再使用了,要如何才能释放<em>内存</em>?rnrn
疑问疑问疑问疑问疑问疑问
我在IMAGE控件的ONCHICK事件下编写如下代码:rnbeginrnrn if FileIndex >=FileCount-1 then exit ;rn FileIndex :=FileIndex+1;rn ListBox1.ItemIndex :=FileIndex;rn FileListName.WriteInteger ('播放文件','文件号',FileIndex);rn PlayMedia;rnrnend;rn出现如下的错误提示:rn[Error] mainFrm.pas(668): Statement expected, but expression of type 'TImage' foundrn但如果改成这样就没有问题:rnbeginrnrn if FileIndex >=FileCount-1 then mediaplayer1.Close ;rn FileIndex :=FileIndex+1;rn ListBox1.ItemIndex :=FileIndex;rn FileListName.WriteInteger ('播放文件','文件号',FileIndex);rn PlayMedia;rnrnend;rn点解啊?rnrn
有关一道开辟内存指针题的疑问
大家好,这是C程序设的一道题,答案不全,请高手帮忙补一下,并解释一下这两个函数rnrn[code=C/C++]/*rn 编写一个函数alloc(n),用来在<em>内存</em>区新开辟一个连续的空间(n个字节)。此函数的返回值是一个指针,指向新开辟的连续空间的起始地址。rn再写一个函数free(p),将地址p开始的各单元释放(不能再被程序使用,除非再度开辟)rn 提示:先在<em>内存</em>区确定出一片相当大的连续空间(例如1000个字节)。然后开辟与释放都在此空间内进行。假设指针变量p原已指向未用空间的开头,rn调用alloc(n)后,开辟了n个字节可供程序使用(例如,可以复制到这些单元中)。现在需要使p的值变成p+n,表示空白未用区从p+n地址开始,rn同时要将新开辟区的起始位置(p)作为函数值返回,以表示可以利用从此点开始的单元。如果要新开辟的区太大(n大),超过了预设的空间—1000字符,rn在alloc(n)函数返回指针NULL,表示开辟失败。rn alloc(n)应返回一个指向字符型数据的指针(因为开辟的区间是以字节为单位被利用的)。rn*/rnrn///////////////////////答案rn#define NULL 0rn#define ALLOCSIZE 1000rnrnchar *alloc(int n)rnrn if(allocp+n=allocbuf && p>allocbuf+ALLOCSIZE)rn allocp=p;rnrnrn///////////////////////////////自己改的,不全rn#include rn#define NULL 0rn#define ALLOCSIZE 1000rnvoid main()rnrn char *alloc(int n);rn free(char *p);rn char allocbuf[ALLOCSIZE];rn char *allocp=allocbuf;rnrnrnchar *alloc(int n)rnrn if(allocp+n=allocbuf && p>allocbuf+ALLOCSIZE)rn allocp=p;rn[/code]
用DEBUG查询ROM内存 生产日期的疑问~
初学汇编,学到一个可以查询电脑ROM生产日期的方法。rn好奇试了,过程如下rnrn从FFF0:0开始查询,第二次可以查到结果。rn但显示的数据却是01/01/92.。rn这个数据令我百思不得其解,电脑是上周刚买的,华硕,4800元。rn我想就算是一个比较早的ROM<em>内存</em>,也不至于早到这地步吧。。所以我怀疑是不是我哪儿操作不对,rn跪求大神指教~rnrn(还有我用的事WIN7的,所以没有DEBUG。这里下载了一个DOSBOX0.74和一个32位的DEBUG.EXE放入了D盘rn。。)
函数内部申请一块内存疑问
看了一个09年的老帖子,不好挖尸,这里再问下。rnrnchar *Getmemroy() rn rn char *p = (char *)malloc(1024); rn return p;//这里返回的是一个局部变量,合适吗? rnrnrn int main() rn rn char *p;rn p = GetMemory();rn strcpy(p,"hello world");//rn cout<
内存初始化选用CPU指令疑问
做<em>内存</em>清零函数的优化rn两个函数rn分别用两条指令rn一个movdqa, 一个movntdqrn数据尺寸(双字串长)小时第一个好,数据尺寸大时第二个好rn在尺寸为135000-136000范围开始第二个函数表现开始好于一rn(纳闷的是不是512k/4=131072)rn二级缓存是512k 一级缓存是8krn请问如何切分分界点rnrn[code=C/C++]#include rn#include rnrn#define TestCount 10000rnrnDWORD TestD[655360];rnrn//应该总假定是双字串rnvoid AsmMemZero0(unsigned long * p, unsigned long t) rn rn __asm rn rn xor eax, eaxrn cldrn mov edi, dword ptr [p]rn mov edx, trn test edx, 0xFFFFFFFFrn je exit0rn test edi, 15 //是否16字节对齐rn je AsmZero1rn mov ecx, edirn and ecx, 0xFFFFFFF0rn add ecx, 16rn sub ecx, edi //得到需要双字复制部分,要和edx比较谁大rn shr ecx, 2 //转换为双字长度rn mov ebx, ecxrn cmp ecx, edxrn ja AsmZero2 //不足,转尾处理rnAsmZero01:rn mov dword ptr [edi], eaxrn add edi, 4rn sub ecx, 1rn jne AsmZero01rn sub edx, ebxrn je exit0 //是否刚好rnAsmZero1: //16字节对齐rn mov ecx, edxrn shr ecx, 2rn je AsmZero2 //是否不足16字节rn pxor xmm0, xmm0rnAsmZero11:rn movdqa [edi], xmm0rn add edi, 16rn sub ecx, 1rn jne AsmZero11rnAsmZero2:rn mov ecx, edxrn and ecx, 15rn je exit0rnAsmZero3:rn mov dword ptr [edi], eaxrn add edi, 4rn sub ecx, 1rn jne AsmZero3rnexit0:rn rn rnrn//应该总假定是双字串rnvoid AsmMemZero1(unsigned long * p, unsigned long t) rn rn __asm rn rn xor eax, eaxrn cldrn mov edi, dword ptr [p]rn mov edx, trn test edx, 0xFFFFFFFFrn je exit0rn test edi, 15 //是否16字节对齐rn je AsmZero1rn mov ecx, edirn and ecx, 0xFFFFFFF0rn add ecx, 16rn sub ecx, edi //得到需要双字复制部分,要和edx比较谁大rn shr ecx, 2 //转换为双字长度rn mov ebx, ecxrn cmp ecx, edxrn ja AsmZero2 //不足,转尾处理rnAsmZero01:rn mov dword ptr [edi], eaxrn add edi, 4rn sub ecx, 1rn jne AsmZero01rn sub edx, ebxrn je exit0 //是否刚好rnAsmZero1: //16字节对齐rn mov ecx, edxrn pxor xmm0, xmm0rn shr ecx, 2rn je AsmZero2 //是否不足16字节rnAsmZero11:rn movntdq [edi], xmm0rn add edi, 16rn sub ecx, 1rn jne AsmZero11rnAsmZero2:rn mov ecx, edxrn and ecx, 15rn je exit0rnAsmZero3:rn mov dword ptr [edi], eaxrn add edi, 4rn sub ecx, 1rn jne AsmZero3rnexit0:rn sfencern rn rnrn//应该总假定是双字串rnvoid AsmMemZeroALU(unsigned long * p, unsigned long t) rn rn __asm rn rn xor eax, eaxrn cldrn mov edi, dword ptr [p]rn mov ecx, trn test ecx, 0xFFFFFFFFrn je exit0rn rep stosdrnexit0:rn rnrnrnint main(void)rnrn UINT64 s_u64Frequency = 1;rn UINT64 s_u64Start, s_u64End;rn unsigned long i, TestSize;rnrn printf("Input Test Size: ");rn scanf("%ld", &TestSize);rn SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL); rnrn QueryPerformanceFrequency((LARGE_INTEGER *)&s_u64Frequency );rn QueryPerformanceCounter((LARGE_INTEGER *)&s_u64Start );rn for (i = 0; i < TestCount; i ++)rn AsmMemZero0(&TestD[0], TestSize);rn QueryPerformanceCounter((LARGE_INTEGER *)&s_u64End );rnrn printf( "func 0 Elapsed time: %.3f ms\n",rn (double)(( s_u64End - s_u64Start ) * 1000.0 / (double)s_u64Frequency ));rnrn QueryPerformanceFrequency((LARGE_INTEGER *)&s_u64Frequency );rn QueryPerformanceCounter((LARGE_INTEGER *)&s_u64Start );rn for (i = 0; i < TestCount; i ++)rn AsmMemZero1(&TestD[0], TestSize);rn QueryPerformanceCounter((LARGE_INTEGER *)&s_u64End );rnrn printf( "func 1 Elapsed time: %.3f ms\n",rn (double)(( s_u64End - s_u64Start ) * 1000.0 / (double)s_u64Frequency ));rnrn return 0;rn[/code]
关于SSIS内存使用的一些疑问
1、数据流中聚合转换的<em>内存</em>使用rn 假设需要聚合的数据总量是50000000行,合计物理大小为10G,而分配给SSIS的最大可用<em>内存</em>是4G(SSIS和数据库引擎使用的是不同<em>内存</em>区域?),这种情况下,会出现什么情况?出错或者效率极差?rn 据说在大数据量压力下,聚合转换、查找、排序组件性能很差?rn2、将聚合操作放在数据流的源中rn 思路:首先定义一个sql任务,内容是一个包含group by的聚合查询,将完整结果集传递给一个Object变量,变量作为数据流的源,能不能解决问题1的情况?rn3、整个过程放在一个sql任务中rn sql任务脚本类似这样:rn insert into XXX(......)rn select .....rn from XXXrn group by .....rnrn以上3种方式在数据大小远远大于可用物理<em>内存</em>的情况下,哪种方法比较好?
笔记本更换内存蓝屏的一点小疑问
笔记本原来是用的 512MB 533的<em>内存</em>,DELL原装的。rn现在要换2个1G(金士顿)的,但1G的<em>内存</em>是667的(我的主板支持667的<em>内存</em>)。拔掉了原来的512的,刚刚插上1个1G的,一开机就蓝屏。rn在及其自检的时候,系统发现了<em>内存</em>被换过,然后提示了些什么没仔细看。就按F1,继续运行了。rn可是一进入系统就蓝屏。说<em>内存</em>有问题。请问是不是我要在BIOS里设什么才能正常使用?还是我的机器就和这个<em>内存</em>不兼容?rn
请教关于结构体,关于内存疑问
以一个简单的例子说明:问题见注释行。 感谢!!!!rnrn#include rn#include rn#include rnstruct abrnrn int *a1;rn int cnt1;rn;rnab AB;rn ab plus(int *a,int cnt)rn rnrn int *b = (int*)malloc(sizeof(int)*3); rn for(int i=0;i)rn rn
关于内存的一点疑问,求解惑
以nand flash 分页为 2k+64 为例,在ARM嵌入式中,用32位中的低12位表示页内偏移量rn但,12位最多可以表示的4096位数字,即4096个页内地址,32位数字最多表示4G,我们也说32位的处理器支持4G,而如果一页为2k+64 ,不就只利用了一半多一点吗?32位数字表示的4个G的数字不都是唯一的吗(地址应该,不,肯定是唯一的),这只利用一半多,是不是浪费了珍贵的地址了么?地址(就是那代表存储空间的32位数字)不就不连续了么?rn(刨除MMU,说物理地址)rn当然,我知道浪费不是我们嵌入式IT人的作风。也有些猜想:1、我的思想被51单片机禁锢了,它的地址不是用一个字或指令(32位)决定的,而是先用一条独立指令去决定片选,再用32位用做地址(分5个周期)发过去。虽然每片NAND 最大只能是4g 但可以控制的片选多,地址大大增加了。。但又感觉,似乎影响了效率,地址数据还是不连续。还有些猜想。自己都觉的不靠谱,就不说了。rnrn表达很凌乱,想法思维不成熟,还请指点一二。rn[color=#00FF00]先谢过了[/color]
汇编里面内存访问的一个小疑问
各位,问个简单的问题,在网上搜索了许久,都掌握不了要点。rnrn在linux里面用nasm写一段小代码rnrn如:rn...rnprompt_msg1 db "abc",0rnprompt_msg2 db "hi",0rn...rnrn编译成功后,我用GDB查看这两个变量的地址rn输入命令 (gdb) x/2sb &prompt_msg1rn得到rn0x80493e4 "abc"rn0x80493e8 "hi"rnrn输入命令 (gdb) x/nfu 0x80493e4rn查看0x80493e4这个地址存储的值,得到:rn0x80493e4 97rn97为a的ASCI的值rnrn我刚开始接触汇编编程,现在搞不懂的是:rn1. 0x80493e4和0x80493e8这两个是什么地址? 是真实的物理地址还是逻辑地址?rn2. 0x80493e4这个地址存放在哪里?是放在<em>内存</em>里面吗?rn3. 97这个数值是直接存储在0x80493e4的吗?怎么存的?从0x80493e4到0x80493e8存不了3个字节吧,如果不是,那么是怎么通过0x80493e4找到97的,0x80493e4上只能存0或1吧,存储97要8个bitrnrn问题太多了,请大家帮下忙,谢谢。rnrnrn
关于数组名和指针的疑问 内存不可写
char a[] = "hello";rn a[0] = 'X';rn char *p = "hello";rn *p = 'x'; //这条语句编译可以通过,但运行时会出错。说<em>内存</em>不可写 为什么???rn rn我是这么分析的:p中存的是字符串首字母的地址,也就是‘h’的地址,对其进行*间接寻址,得到的是‘h’这个字符,这个字符是常量,对一个常量进行赋值,所以系统提示不可写?rnrn 那么,如果改写成这种形式,为什么又可以正常运行:rn char *p = a; //定义指针p,指向a数组,也就是数组的第一个元素的地址rn *p = 'x'; //我的理解,p中存的是a[0]的地址,也是个常数,对其间接寻址rn //找到a[0]这个位置进行访问,得到的是h这个字符,情况貌似跟上rn //面的一样,为什么这里系统却不报错,而是成功将h替换为xrnrn再来看第一个问题,p中保存的是字符串首字母的地址,是个地址,是个常数,rn那么* (char *)p 又该解释作什么呢?是不是能理解成将这个“常数”强制转换成地址,进行寻址,rn得到地址中的内容?
I/O端口和I/O内存疑问。。
请问各位,假如现在有一个外设,这个外设有寄存器也有<em>内存</em>,那么驱动程序该如何确定为它分配的I/O端口地址和I/O<em>内存</em>地址啊。。难道用 request_region 和 request_mem_region 随便分配没有被占用的地址空间吗。。
对形参在内存中存在状态的疑问
void test1(int k)rnrn k = 10;rnrnrnvoid test2(int *kk)rnrn *kk = 100;rnrnrnvoid main()rnrn int i = 0;rn int *ii = &i;rnrn test1(i);rn test2(ii);rnrn请问两个被调用函数test1和test2的形参 int k和int kk,系统有没有在<em>内存</em>里面开辟有<em>内存</em>存放这两个形参?rn形参int K在test1被调用结束后应该在<em>内存</em>不存在了,那int *kk指针KK在test2被调用结束后在<em>内存</em>中是不是还存在?
placemant new的一个内存相关疑问
最近看了《对new的几种形式的一些认识(转)》帖子,地址: rnrnhttp://blog.sina.com.cn/s/blog_5d9989b00100d7v1.htmlrn 看到里面的代码有一个地方不是很明白。rnrnvoid* mallocShared(size_t size); //用于分配共享<em>内存</em>,该函数是别的程序员写的,你只知道通过调用他可以获得一块已分配而未初始化的<em>内存</em>。rnrnvoid* mallocShared(size_t size)rnrn rn return (::operator new(size)); //用的是全局函数rnrnint main()rnrn void* p = mallocShared(sizeof(A)); //就限定是在这里调用的。rnrn A* pA = new(p) A;rnrn cout << pA->Get() << endl;rnrn [color=#FF0000]A* pA1 = new(p) A; //再次指定位置创建。[/color]rnrn pA->~A(); //这里显式调用析构函数来析构对象,但是<em>内存</em>并没有释放,还可以再次使用。rnrn A* pA1 = new(p) A;rnrn //在这里判断别的程序是否还需要用到该<em>内存</em>rnrn delete pA; //当别人不再需要,自己也不会再用到,可以释放!rnrn return 0;rnrnrn红色代码那里不够理解,分配的<em>内存</em>只是sizeof(A),那么怎么可以连续创建2个A对象实例的指针?而创建实例的指针是需要分配<em>内存</em>的,那这样做不会出现<em>内存</em>不足的错误么?rn如果它们是共享<em>内存</em>,那mallocShared里的::operator new(size)是开辟共享<em>内存</em>之用么?暂时理解不了啊。。。
关于连续释放内存函数free()的疑问
[code=C/C++]void freedel(Item * p)rnrn while(p != NULL)rn rn free(p);/*<em>疑问</em>,既然已经释放了p那p->netx也被释放了才对.按理来说p->netx应该是随机值,赋值给p岂不是会出错?*/rn p = p->netx;rn rn return;rn[/code]rn程序不单步确实不出错.但是程序单步就会出错.rn求解答.
对有服务器内存数据管理的一些疑问
在制作服务器<em>内存</em>数据管理这一块的时候,发现一个问题,存在<em>内存</em>中的数据要实现向sql那样的复杂查询很麻烦,而且性能不能保证。rn比如说一些公共数据获取(拍卖行的搜索,擂台的排序等)rnrn请问有什么存储结构或者思想能解决这个问题。
有关树型节点释放内存疑问
程序中有一个node型指针:rnstruct node *tree;rntree = (struct node *)malloc( 2*sampleSize*sizeof(struct node) );rn用完这个tree后,可否用free(tree)将整个树全部释放掉?rn注意tree指针并没变化,始终指向第一个元素。
请教,JVM内存疑问,在线等
环境: jdk1.6 resin3.1.8 运行JSP 其中设置最大<em>内存</em>为 xmx1024mrnrn请问:网站在运行中产生的session和arraylist以及application等数据对象是存储在JVM分配的1024M<em>内存</em>中还是rn另外的<em>内存</em>?rnrn如果是存在JVM分配的<em>内存</em>中如果这些数据对象占用的空间大于JVM分配的最大<em>内存</em>会怎么样,又该如何处理,谢谢rnrn望各位解释~
关于SQL SERVER 2008 内存使用的疑问
1、win2003 Enterprise Edition + SQL SERVER 2008,都是32位的。rn2、<em>内存</em>8G,操作系统的boot.ini已经加上了PAE,用以访问大于4G的<em>内存</em>。rn3、SQL SERVER 2008的<em>内存</em>管理勾选了“使用AWE分配<em>内存</em>”rn4、服务器只运行SQL SERVER。不重启SQL SERVER,不重启服务器。rn5、运行一段时间后观察SQL占用的<em>内存</em>始终在1.7G左右。rn6、摘录的介绍“在 Windows Server 2003 中,SQL Server 支持动态分配 AWE <em>内存</em>。启动过程中,SQL Server 仅保留一小部分 AWE 映射<em>内存</em>。当需要额外的 AWE 映射<em>内存</em>时,操作系统便会将其动态分配给 SQL Server。同样,如果所需的资源较少,则 SQL Server 可将 AWE 映射<em>内存</em>返回到操作系统,以供其他进程或应用程序使用”。rnrn<em>疑问</em>:rn1、<em>内存</em>剩余还很多,为什么SQL不继续占用<em>内存</em>呢?rn2、SQL是不是会定期把不活跃的<em>内存</em>占用换给操作系统?如果是这样,这个定期是长时间?rn3、在32位系统里,是不是单个程序占用<em>内存</em>会被限制在2G以内?rn4、我的数据库文件占用磁盘3.7G左右,有没有可能把整个数据库都缓冲到<em>内存</em>中,让平时需要I/O访问的操作都从<em>内存</em>中进行?rn5、如果第4点不行,那有没有办法让SQL加大缓冲的空间,以减少I/O的访问,从而提高运行速度?rn6、如果不使用AWE,我知道可以通过设置<em>内存</em>最大值来让SQL占用很大的<em>内存</em>,但是这样的运行效果反而很慢,运行程序变得很卡,经常出现连接池满的现象。rnrn望大虾赐教!
新手关于C++内存访问的一个疑问
有件事情不太明白:rn比如一个int指针指向一个int数组:rnint* p=new int[10];rn这个数组有10个元素,但如果我们使p指向第十个元素后再++,也就是:rnp+=10;rnp++;rn这时候假设p指向的还是一个int型的数据,可不可以通过*p取得它的值?rn以上只是举个例子来描述我的想法,大体上就是指针指向的<em>内存</em>中的东西,是不是任何时候都可以访问到(不管合不合法)?rnrn不知道表达得够不够清楚...
关于指针管理内存的小疑问
这程序貌似有点不可理喻,但我想阐述的就是:既然可以反复给word数组赋值,那么在整个程序只使用这么一个或少数几个数组不就同样能达到节省<em>内存</em>的作用?指针的new和delete有什么优势?我是初学者,求解答!!![图片](https://img-ask.csdn.net/upload/201608/15/1471262143_171525.png)
关于一个内存dc的初始化的疑问
CPaintDC dc(this);rn CBitmap bmp;rn bmp.CreateCompatibleBitmap(&dc,BLOCK_WIDTH*game.m_xTotalBlocks,BLOCK_WIDTH*game.m_yTotalBlocks);rn m_MemDC.CreateCompatibleDC(&dc);rn m_MemDC.SelectObject(&bmp);rn m_MemDC.FillSolidRect(0,0,BLOCK_WIDTH*game.m_xTotalBlocks,BLOCK_WIDTH*game.m_yTotalBlocks,0x00ffffff);rnrn------------------rn以上的代码初始化<em>内存</em>dc,用到了CBitmap bmp,这个是局部变量,但是<em>内存</em>dc是类成员变量,用bmp这个局部变量没问题吗?rn但是实际运行是没问题的。
关于Ado2.h的使用疑问内存增长情况
使用ADO2的类库如下:rnrn// MODULE: Ado2.hrn// AUTHOR: Carlos Antollini rn// Version 2.20rnrn使用的代码如下:rnrn[code=c]rnCString csSql = _T(" SQL语句"); //语句绝对没问题rnCADORecordset *m_pRs;rntry rn rn m_pRs = new CADORecordset(m_pDb); //创建没问题rn m_pRs->Open(csSql,CADORecordset::openUnknown); //这里存在<em>内存</em>增长情况,查询语句是没有问题的。 rn m_pRs->Close();rn delete m_pRs;rnrnrncatch(......)rnrn ......rnrn[/code]rnrn以上语句,是在个循环里使用的。rn求各位大神解惑呀,<em>内存</em>不停增长。
java疑问收集
<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集<em>java</em><em>疑问</em>收集
JAVA菜鸟的疑问:开发环境!!!!!!!!!!
认识(仅仅认识而已)<em>java</em>已有一年多,入门确实挺容易,可我却没有再深入学习她,因为没有一个功能强大的集成开发环境。我现在连JDK也还不知怎么用,只会用VJ1.0。 rnrn想请教各位,对于用Java开发应用程序,有没有像 VC++或 Delphi 那样的环境?否则对于界面的排版实在也太烦了吧。。。。。。。。。。。
java 向下转型疑问
[code=Java][/code]rnimport <em>java</em>.awt.*;rnimport <em>java</em>.awt.event.*;rnpublic class TestStopWatch extends Framern/**rn * @param argsrn */rnpublic static void main(String[] args) rn// TODO Auto-generated method stubrnTestStopWatch tsw = new TestStopWatch();rntsw.setSize(1000, 800);rntsw.setVisible(true);rntsw.addWindowListener(new WindowAdapter() rnpublic void windowClosing(WindowEvent e)rne.getWindow().setVisible(false);rn((Window)e.getSource()).dispose(); //这行.rnrn);rnrnrnrn这是我的<em>疑问</em>,我觉得不能进行向下转型,请问我的问题在哪里?问题补充: rnrnrn我想问的是,rn怎么可以那么随意的向下转型,不会危险吗?
java,向下转型的疑问
[code=Java][/code]rnrnFrame f = new Frame(); // new一个Frame对象.rnf.setSize(1000, 800); //设置长和宽.rnf.setVisible(true); //设置可见性.rnf.addWindowListener(new WindowAdapter() //为窗口注册监听器.rnpublic void windowClosing(WindowEvent e) //重写 windowClosing方法.rn((Window)e.getSource()).dispose(); //<em>疑问</em> 一rn((Window)e.getComponent()).dispose(); //<em>疑问</em>二rnrn我想问的两个<em>疑问</em>:一:((Window)e.getSource()).dispose();//将Object -> Windowrn 二:((Window)e.getSource()).dispose();//将Component -> Windowrn我的<em>疑问</em>是不能随意转成Window(向下转型),rn这个问题我曾经<em>疑问</em>了很久,但是刚刚我想,是不是 e 是WindowEven 的,所以返回会自己返回Window的实例rn(即instenceof Window),所以可以向下转型,rn是不是这样的?rn
java map两个疑问
要写毕业设计了,我今天看是动手,但是,写着写着,碰到了map的问题,疑惑不解,特来求教:rn-------------rn问题1 > 情景、rn假定我自定义了一个map作为存储器,定义如下:Map< String, Map> > storage = new ... .rn那么,我传入的只能是String 和Map>。rn此时,出问题了,rnV对应的是Map>,我随便输入一个storage.put("test", new HashMap>());//报错!!!rn---------------rn我原本以为,?作为通配符,可以随便录入,结果在这里,即便是Object都不能对应!!!rn问题1 > 提问、rn 1、为什么 ? 2、碰到这种设计,怎么传参 ?rnrn问题2:由于问题太多,请此处查看问题2,谢谢: http://bbs.csdn.net/topics/390742200
关于java volatile 的疑问
假如某个时刻volatile 变量inc的值为10。rnrn线程1对变量进行自增操作,线程1先读取了变量inc的原始值,然后线程1被阻塞了;rnrn然后线程2对变量进行自增操作,线程2也去读取变量inc的原始值,由于线程1只是对变量inc进行读取操作,而没有对变量进行修改操作,所以不会导致线程2的工作<em>内存</em>中缓存变量inc的缓存行无效,所以线程2会直接去主存读取inc的值,发现inc的值时10,然后进行加1操作,并把11写入工作<em>内存</em>,最后写入主存。rnrn然后线程1接着进行加1操作,由于已经读取了inc的值,注意此时在线程1的工作<em>内存</em>中inc的值仍然为10,所以线程1对inc进行加1操作后inc的值为11,然后将11写入工作<em>内存</em>,最后写入主存。rnrn那么两个线程分别进行了一次自增操作后,inc只增加了1。rnrn解释到这里,可能有朋友会有<em>疑问</em>,不对啊,前面不是保证一个变量在修改volatile变量时,会让缓存行无效吗?然后其他线程去读就会读到新的值,对,这个没错。这个就是上面的happens-before规则中的volatile变量规则,但是要注意,线程1对变量进行读取操作之后,被阻塞了的话,并没有对inc值进行修改。然后虽然volatile能保证线程2对变量inc的值读取是从<em>内存</em>中读取的,但是线程1没有进行修改,所以线程2根本就不会看到修改的值。rnrnrn原文如上:rn 我的理解是,哪个线程改了volatile变量,那么这个volatile变量就对哪个线程可见,对吗? rn
java String split疑问
public String[] split(String regex,int limit)rnrn字符串 "boo:and:foo" 使用这些参数可生成下列结果rnRegex Limit 结果rno 5 "b", [color=#FF0000]""[/color], ":and:f", [color=#FF0000]""[/color], [color=#FF0000]""[/color] rno -2 "b", [color=#FF0000]""[/color], ":and:f", [color=#FF0000]""[/color], [color=#FF0000]""[/color] rno 0 "b", [color=#FF0000]""[/color], ":and:f" rnrn请大家分析一下为什么结果红色部分是怎么split的,非常感谢
wordpress cms插件pod下载
优秀的wordpress cms插件,使你的wordpress成为优质的cms系统 相关下载链接:[url=//download.csdn.net/download/twttfj2/2970524?utm_source=bbsseo]//download.csdn.net/download/twttfj2/2970524?utm_source=bbsseo[/url]
牛肉信息追溯系统(牛肉店版)下载
之前编的一个牛肉信息追溯系统中的牛肉店版,用来读取二维QR条码中的信息,并存储在Access数据库中,系统可实现记录添加,修改,删除,编辑,搜寻,以及搜集扫描枪信息等功能。系统的初始用户名和密码已附在说明文件中。 相关下载链接:[url=//download.csdn.net/download/hbhaocui/4080956?utm_source=bbsseo]//download.csdn.net/download/hbhaocui/4080956?utm_source=bbsseo[/url]
第五章 进销存管理系统 visual C#项目开发实例下载
第五章 进销存管理系统 visual C#项目开发实例 长师软件学院09级蔡老师实训项目代码 相关下载链接:[url=//download.csdn.net/download/yvyan2010/4351218?utm_source=bbsseo]//download.csdn.net/download/yvyan2010/4351218?utm_source=bbsseo[/url]
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数
我们是很有底线的