使用pycharm查看字符串内存地址的时候,为什么每次执行得到的地址都是不同的?

图片说明图片说明图片说明

2个回答

变量内容是一样的,但当运行Python时候,操作系统每次给Python分配的内存空间不是一样的。 所以id函数取到的内存地址不同。(ID函数是取object的id,CPython时候用内存地址)

qq_25925273
qq_25925273 感谢
6 个月之前 回复

因为python语言中带有很多内置函数,可以直接调用这些函数获取相关的参数值。然而,id()函数是获取对象的内存地址,每个变量、对象的内存地址不一致。

qq_25925273
qq_25925273 还是有些不明白 调用的相同变量为什么内存地址也会不同
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
为何每次执行保存的时候都是两遍
[code=VBScript]<%rnif request.form("act")="1" thenrn %> <%rnrn vid = trim(request.cookies("user_id"))rn vtitle = trim(request.form("title"))rn vcontent = trim(request.form("QueennyEditor_0"))rnrn sqlstr = "insert into log values (log_id.nextval,'" & vid & "',sysdate,sysdate,1,sysdate,1,'" & vtitle & "','" & vcontent & "',null,0)"rn conn.Execute(SqlStr)rn %> <%rnend ifrn%>[/code]rnrn[color=#FF0000]为何每次执行保存的时候都是两遍,但window.alert只弹出过一次,数据库是ORACLE[/color]
为什么内存地址都是一样的呀?
int main(int argc, char *argv[])rnrnrn int a=9;rn int * i=(int*)malloc(sizeof(int));rnprintf("i %d\n",i);rnprintf("a %d\n",&a);rnfree(i);rngetchar();rnrnrn先运行这个程序一次,在等待输入(getchar)的时候,再运行这个程序一次,为什么输出的地址都是一样的呢?
为什么在不同时候GetClientRect得到不同的结果?
在onCreate()跟在onDraw()得到的GetClientRect结果不同,宽跟高都相差16rn这是为什么?rn在运行中没有改变任何的形状大小的代码。
字符串改变及地址改变(字符串内存地址)
字符串内容一旦定义了就不能改变。每次改变都会重新开辟一个内存空间存储新的内容。 字符串创建对象(赋值)有两种方式: 通过构造方法创建对象。 通过直接赋值创建对象。 如图: 区别: 构造方法创建字符串实在堆中。 直接赋值的字符串在方法区的常量池中。 如图: 两个实例化的字符串为什么返回false? 解释: 在栈中开辟mian方法空间,然后实例化字符串 s1,s1实例化是...
每次这个时候都是选方向的时候
本人大二学生一枚,马上大三就开始分方向了,一个是JAVA一个是C++,两样在大一大二都接触过了,不过都是很基础的东西,跪求各位大神指导下,两个改选哪个好一点,谢谢了
每次每次请求都是项目初始地址加访问地址
<% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> href="basePath%>">
ASP.NET 用RSA加密得到的密文每次都是不同的吗?
string publickey = "um/wVc4bH+YVN6fK2yqc5ulME/NkC79TW6DX0c1qiBsnXqgqYDG47gdYtHgQQqLyZe5MVtlJ1aL/JN9o4FsCK1EpRIAO//9XtJS4HJkCkiwNT2SAwd8W1nVKwchHMJE8+4tYWfeUSJ5ikKodh0+vooSSMnJfjC4ywRttjzzONW0=AQAB"; //导出 rsa1 的公钥rnrn string plaintext;rn plaintext = "abc"; //原始数据rnrn rsa2.FromXmlString(publickey); //rsa2 导入 rsa1 的公钥,用于加密信息rnrn //rsa2开始加密rn byte[] cipherbytes;rn cipherbytes = rsa2.Encrypt(rn Encoding.UTF8.GetBytes(plaintext),rn false);rn Label1.Text = Convert.ToBase64String(cipherbytes);rnrn这样得到的密文怎么是变动的呢?rnrn高手指点下
求助,*和&为什么会得到两个不同的地址?
#includernint main()rn using namespace std;rn int aa;rn int* ab=new int;rn int ac=(int)ab;rn *ab=2333;rn cout <
为什么每次编译都是全编译?
不知是哪里设置的问题还是什么,原来没有这种情况
不明白。。。为什么每次都是wa
一些难的题也就算了。。。为什么一些水题交上去还是会wa???请教。。。rn下面2个题。。,我的答案哪里出问题了?:rn[url=http://www.bianchengla.com/problem/1302][/url]rnrn[code=C/C++]#include rnrn//最长递减自序列。。。rnint main(int argc, char **argv)rnrn int arr[10001];rn int subMax[10001];rn int nb;rn while(1)rn rn scanf("%d",&nb);rn if(nb==0)rn break;rn for(int i=0; i=0; --i)rn rn subMax[i] = 1;rn for(int j=i+1; j=arr[j])rn rn if(subMax[j]+1>subMax[i])rn subMax[i] = subMax[j]+1;rn rn rn rn printf("%d\n",subMax[0]);rn rn return 0;rnrn[/code]rnrn和rnrn[url=http://www.bianchengla.com/problem/1422][/url]rn[code=C/C++]#include rn#include rn#include rnusing namespace std;rnrnstruct edgernrn int p1;rn int p2;rn int w;rn;rnint comp(const void *a, const void *b)rnrn edge *arg1 =(edge*)a;rn edge *arg2 =(edge*)b;rn return arg1->w - arg2->w;rnrn//找最小生成树,贪心法,从权值最小的边开始。rn//每次加入一条边后对连接的所有顶点更新所属的子图IDrn//以防止发生回路的情况,rnint main(int argc, char **argv)rnrn int instance;rn cin>>instance;rn for(int d=0; d>vertNB>>edgeNB;rn if(edgeNB < vertNB-1)rn rn cout<<0<>edgeArr[i].p1>>edgeArr[i].p2>>edgeArr[i].w;rn rn qsort(edgeArr, edgeNB, sizeof(edge),comp);//排序下,等下从小到大rn int min = 0;rn //----开始找最小生成树rn for(int i=0; i
为什么,每次都是这样的错误
错误信息:rn分析器错误信息: 未能加载类型“eMeng.Exam.SelectMultiPages”。rnrn源错误: rnrnrn行 1: <%@ Page EnableViewState="true" CodeBehind="SelectMultiPages.aspx.cs" Language="c#" AutoEventWireup="false" Inherits="eMeng.Exam.SelectMultiPages" %>rn行 2: rn行 3: rn rnrn源文件: D:\procedure\aspnet\study\SelectMultiPages.aspx 行: 1 rn新手上路,望大家能详细指教
为什么每次上线我的ip地址都是一样的啊?
我是adsl上网,每次上线是在命令提示符下输入ipconfig后ipaddress都是一样的,怎么回事,ip地址不是每次上线都不一样么?
读取内存 为什么每次得到的都是0 有代码!!!!!!!!!!!
[code=C#]rn private void button3_Click(object sender, EventArgs e)rn rn int Base = 0x9F44F0;rn int process = int.Parse(GetPidByProcessName(processName).ToString());rn int hp=new int();rn ReadProcessMemory(process, 0x9F450C, Base, 1, 0);rn ReadProcessMemory(process, Base+0x20, Base, 1, 0);rn ReadProcessMemory(process, Base+0x46C, hp, 1, 0);rn textBox1.Text = hp.ToString();rn rnrn [DllImport("kernel32.dll")]rn public static extern int ReadProcessMemoryrn (rn int hProcess,rn int lpBaseAddress,rn int lpBuffer,rn int nSize,rn int lpNumberOfBytesWrittenrn );rn public static int GetPidByProcessName(string processName)rn rn Process[] arrayProcess = Process.GetProcessesByName(processName);rnrn foreach (Process p in arrayProcess)rn rn return p.Id;rn rn return 0;rn rnrn[/code]rn我的内存地址 基址 都是正确的 为什么得到的时候是0rnrn请教高手 是不是 有地方必须转换下啊?rnrn我不怎么懂 请教了
js调试数组,每次得到的值都是object
[code=JScript] function sortTable(sTableID, iCol, sDataType) rn var oTable = document.getElementById(sTableID);rn var oTBody = oTable.tBodies[0];rn var colDataRows = oTBody.rows;rn var aTRs = new Array;rn rn for (var i=0; i < colDataRows.length; i++) rn rn aTRs[i] = colDataRows[i];rn //alert(aTRs[i]);rn rn rn if (oTable.sortCol == iCol) rn aTRs.reverse();rn else rn aTRs.sort(generateCompareTRs(iCol, sDataType));rn rn rn var oFragment = document.createDocumentFragment();rn for (var i=0; i < aTRs.length; i++) rn oFragment.appendChild(aTRs[i]);rn rn rn oTBody.appendChild(oFragment);rn oTable.sortCol = iCol;rn [/code]rnrn我想给这个数组排序,这里aTRs.reverse();默认顺序不行,我想进行调试。。。我就写了一个alert(aTRs[i]);就是注释掉那句,但是得到的是object.这个数组里面肯定有值,肯定不是object,是日期。。我怎么才能得到日期阿,否则我没法排序阿。。。
同一内存地址上的直为什么不同?
// d.cpp : 定义控制台应用程序的入口点。rn//rnrn#include "stdafx.h"rn#includernrnusing namespace std;rnrnrn rnmain()rnrnrnconst int a=2293616;rnrnint *p=const_cast(&a);rn*p=3;rncout<<"p="<
pycharm执行代码后 查看变量
在pycharm运行程序后,继续在console对程序中数据进行操作,可以通过以下方式: 1、在菜单栏中,选择项目的下拉菜单里的Edit Configuration 2、选择对应项目,勾选 Show command line afterwards 3、程序运行之后,就会继续保持python shell的状态,可以对数据进行操作调试。 4、调试后记得关闭 ...
Visual studio查看内存地址
1. 查看内存 调试 -&gt; 窗口 -&gt; 内存 -&gt; 内存1-4 打开后,可以直接输入变量的名称,会直接定位到该变量所在的内存地址;
oc查看内存地址的疑问?
大家看看为什么我下面两个查看内存地址不一样呢,哪个是对的哦?rnrnrn[code=objc]rnrnNSString *a=@"ok";rn NSLog(@"内存地址1:%p",a);rn NSLog(@"内存地址2:%x",&a);rnrnrn[/code]rnrnrn这两种查看内存地址的方法怎么结果不一样啊,老师说的都可以用来查看内存地址的嘛,哪个是对的,哪个正规啊?
C#查看变量的内存地址
1、调试代码,监视变量; 2、调试--》窗口--》内存,可最多添加四个内存窗口; 3、拖动监视的变量至内存窗口,可查看变量的内存地址。
查看变量的内存地址
varrn a:shortint;rnbeginrn showmessage(变量a的内存地址); //怎样得到啊?可以这样显示出来看吗?rnend;
为什么成员函数的地址都是1?
问题一:rnclass A rnrnpublic:rn void f()rn rn int f = 0;rn rn rn void h()rn rn int h = 0;rn rn;rnrncout<<&A::f<
执行效果为什么不同?
#include rnLRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;rnint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,rn PSTR szCmdLine, int iCmdShow)rnrn static TCHAR szAppName[] = TEXT ("BlokOut2") ;rn HWND hwnd ;rn MSG msg ;rn WNDCLASS wndclass ;rnrn wndclass.style = CS_HREDRAW | CS_VREDRAW ;rn wndclass.lpfnWndProc = WndProc ;rn wndclass.cbClsExtra = 0 ;rn wndclass.cbWndExtra = 0 ;rn wndclass.hInstance = hInstance ;rn wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;rn wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;rn wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;rn wndclass.lpszMenuName = NULL ;rn wndclass.lpszClassName = szAppName ;rn rn if (!RegisterClass (&wndclass))rn rn MessageBox ( NULL, TEXT ("Program requires Windows NT!"), rn szAppName, MB_ICONERROR) ;rn return 0 ;rn rnrn hwnd = CreateWindow (szAppName, TEXT ("Mouse Button & Capture Demo"),rn WS_OVERLAPPEDWINDOW,rn CW_USEDEFAULT, CW_USEDEFAULT,rn CW_USEDEFAULT, CW_USEDEFAULT,rn NULL, NULL, hInstance, NULL) ;rn rn ShowWindow (hwnd, iCmdShow) ;rn UpdateWindow (hwnd) ;rn rn while (GetMessage (&msg, NULL, 0, 0))rn rn TranslateMessage (&msg) ;rn DispatchMessage (&msg) ;rn rn return msg.wParam ;rnrnrnvoid DrawBoxOutline (HWND hwnd, POINT ptBeg, POINT ptEnd)rnrn HDC hdc ;rn hdc = GetDC (hwnd) ;rn SetROP2 (hdc, R2_NOT) ;rn SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;rn Rectangle (hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y) ;rn rn ReleaseDC (hwnd, hdc) ;rnrnrnLRESULT CALLBACK WndProc ( HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)rnrn static BOOL fBlocking, fValidBox ;rn static POINT ptBeg, ptEnd, ptBoxBeg, ptBoxEnd ;rn HDC hdc ;rn PAINTSTRUCT ps ;rn rn switch (message)rn rn case WM_LBUTTONDOWN :rn ptBeg.x = ptEnd.x = LOWORD (lParam) ;rn ptBeg.y = ptEnd.y = HIWORD (lParam) ;rn rn DrawBoxOutline (hwnd, ptBeg, ptEnd) ;rnrn SetCapture (hwnd) ;rn SetCursor (LoadCursor (NULL, IDC_CROSS)) ;rn rn fBlocking = TRUE ;rn return 0 ;rn rn case WM_MOUSEMOVE :rn if (fBlocking)rn rn SetCursor (LoadCursor (NULL, IDC_CROSS)) ;rn rn DrawBoxOutline (hwnd, ptBeg, ptEnd) ;rn rn ptEnd.x = LOWORD (lParam) ;rn ptEnd.y = HIWORD (lParam) ;rn rn DrawBoxOutline (hwnd, ptBeg, ptEnd) ;rn rn return 0 ;rn rn case WM_LBUTTONUP :rn if (fBlocking)rn rn DrawBoxOutline (hwnd, ptBeg, ptEnd) ;rn rn ptBoxBeg = ptBeg ;rn ptBoxEnd.x = LOWORD (lParam) ;rn ptBoxEnd.y = HIWORD (lParam) ;rn rn ReleaseCapture () ;rn SetCursor (LoadCursor (NULL, IDC_ARROW)) ;rn rn fBlocking = FALSE ;rn fValidBox = TRUE ;rn rn InvalidateRect (hwnd, NULL, TRUE) ;rn rn return 0 ;rn rn case WM_CHAR :rn if (fBlocking & wParam == '\x1B') // i.e., Escapern rn DrawBoxOutline (hwnd, ptBeg, ptEnd) ;rn ReleaseCapture () ;rn SetCursor (LoadCursor (NULL, IDC_ARROW)) ;rnrn fBlocking = FALSE ;rn rn return 0 ;rn rn case WM_PAINT :rn hdc = BeginPaint (hwnd, &ps) ;rn rn if (fValidBox)rn rn SelectObject (hdc, GetStockObject (BLACK_BRUSH)) ;rn Rectangle (hdc, ptBoxBeg.x, ptBoxBeg.y,rn ptBoxEnd.x, ptBoxEnd.y) ;rn rn rn if (fBlocking)rn rn SetROP2 (hdc, R2_NOT) ;rn SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;rn Rectangle (hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y) ;rn rn rn EndPaint (hwnd, &ps) ;rn return 0 ;rn rn case WM_DESTROY :rn PostQuitMessage (0) ;rn return 0 ;rn rn return DefWindowProc (hwnd, message, wParam, lParam) ;rnrnrnrnrn在WM_MOUSEMOVE消息中,为什么必须出现两个DrawBoxOutline函数?为什么不能只含有第二个DrawBoxOutline函数。比如: rn rncase WM_MOUSEMOVE : rn rn if (fBlocking) rn rn SetCursor (LoadCursor (NULL, IDC_CROSS)) ; rn rn ptEnd.x = LOWORD (lParam) ; rn ptEnd.y = HIWORD (lParam) ; rn rn DrawBoxOutline (hwnd, ptBeg, ptEnd) ; rn rn rn return 0 ; rn大家把这段程序调试一下,解决我的问题,可以么?谢谢了 rnrn
为什么cookie每次得到都是点击的那个ID值,传入不同的ID值不能相加
为什么cookie每次得到都是点击的那个ID值,传入不同的ID值不能相加?rn[code=C#]rnpublic class tempList : IHttpHandler rn rn public void ProcessRequest (HttpContext context)rn rn string action = HttpContext.Current.Request.QueryString["action"];rn string id=HttpContext.Current.Request.QueryString["id"];rnrn if (HttpContext.Current.Response.Cookies["acookie"] == null)rn rn HttpCookie acookie = new HttpCookie("productList");rn acookie.Values["productList"] = "";rn acookie.Expires = DateTime.Now.AddMinutes(20);rn HttpContext.Current.Response.AppendCookie(acookie);rn rn HttpCookie cok=HttpContext.Current.Response.Cookies["acookie"];rn string tempId = cok.Values["productList"]; rn //HttpContext.Current.Response.Cookies["productList"].Expires = DateTime.Now.AddMinutes(20);//20分钟超时rn if (action=="add")rn rn if (string.IsNullOrEmpty(tempId))rn rn tempId = id;rn rn elsern rn ArrayList list = new ArrayList(tempId.Split(','));rn if (!list.Contains(id))rn rn list.Add(id);rn rn foreach (object i in list)rn rn if (string.IsNullOrEmpty(tempId))rn rn //HttpContext.Current.Response.Cookies["productList"].Value = i.ToString();rn tempId = i.ToString();rn rn elsern rn tempId += i.ToString();rn rn rn rn cok.Values["productList"] = tempId;rn HttpContext.Current.Response.AppendCookie(cok);rn context.Response.Write(" "); rn rn rn rn rn rn public bool IsReusable rn get rn return false;rn rn rnrnrn[/code]
我每次HTTP POST的数据不同的。为什么得到结果都是相同?
int i;rn CString str,strHeader,strPost,strRead;rn CStdioFile fileSave;rnrn strHeader = _T("Content-Type: application/x-www-form-urlencoded");rnrn for(i = 0;i < 1000;i++)rn rn CInternetSession session("MySession");rn CHttpConnection* conn = NULL;rn CHttpFile* file = NULL;rnrn conn = session.GetHttpConnection("192.168.0.1");rn str.Format("%d",i);rn strPost = str;rn file = conn->OpenRequest(CHttpConnection::HTTP_VERB_POST,_T("/req.asp"));rn file->AddRequestHeaders(strHeader);rn file->SendRequest(NULL,0,(LPVOID)(LPSTR)(LPCTSTR)strPost,strPost.GetLength()); rn while(file->ReadString(strRead))rn rn /*此段代码为将strRead保存为文件,省掉了*/rn rn if(file != NULL)rn rn file->Close();rn delete file;rn rn if(conn != NULL)rn rn conn->Close();rn delete conn;rn rn if(session != NULL)rn rn session.Close();rn delete session;rn rn /*这里有时间延迟程序省掉了*/rn rn return 0;rnrnrnrn我通过IE的WEB页上发送请求没问题。可是在以上程序里的时候,每次获得的结果都是发送0的请求结果,请问我的程序哪里有错误吗?
使用PyCharm执行scrapy项目
使用PyCharm执行scrapy项目 1.首先使用命令创建一个scrapy项目 进入自定义项目目录中,运行下列命令: scrapy startproject mySpider 里面会有 2.添加start.py文件 编写start.py里面的内容 #!/usr/bin/env python # -*- coding:utf-8 -
一个按钮不同时候执行不同的转发
刚开始有个页面上有两个不同的按钮,分别是插入和编辑,都是进入用户信息编辑画面,编辑画面上又有个按钮叫提交,这个提交按钮要根据是从插入按钮还是编辑按钮执行插入或者是更新功能,如何解决啊,谢谢了
偏移地址转换内存地址
本软件是将文件的偏移地址转换成为内存地址,适合于修改文件
寄存器的地址与内存地址
寄存器是有地址的这是没有异议的吧。rn那么寄存器的地址是相对于CPU而言的吗?CPU中有一套自己的地址机制吗?rnrn通常说的地址一般指的地内存地址。rn如果往一个地址中写数据,那么CPU怎么识别是写寄存器还是写内存呢?rnrn
如何得到位图数据的内存地址?
我用GetObject得到一个位图的BITMAP描述。。但其中关于数据地址的bmBits老是为NULL.请问这是怎么一回事,或是有无别的方法得到一个位图数据在内存中的地址。 rnthanks in advance
关于得到位图内存地址
我是想得到位图在内存中的地址,使用的函数是FindResource和LockResource,地址是得到了,但是我进入那个内存时,看到的结果却不是期望看到的结果,目标应该是28 00 ,但是去了00 51等数据;不知道这个地址是不是得到错了,还是怎么回事,请高手们指点一下。
如何得到动态的内存地址
如果是静态的地址,可以用API函数 ReadProcessMemoryrn要写一个程序用来游戏修改,如果是动态分配的地址怎么办呢?用什么方法来找到这个地址呢
怎么得到分配内存地址?
我用的一个卡把申请了一块内存,我该怎样表示得到它的地址。
有关Request.UserHostAddress。为什么得到的都是同一个IP地址(DNS的IP)
我做的是公司内部网站,网站架设在公司局域网内部。rn我在首页里面加了一个Request.UserHostAddress,想获得放过首页的人的机器的IP地址。rn可是我看了一下日志表(我把得到的IP地址都插入到数据库了),里面的IP地址全是同一个,也就是我们公司DNS服务器的IP地址。rn请问高手们,这是怎么回事啊?
为什么remote_addr和remote_host得到是都是IP地址?
如题,用request.servervariables(""),,rnrn测试环境为局域网内多台机器上,在网上邻居上可以互相看见每台机器的机器名称。
怎么得到内存地址?
请问在VB里得到内存地址的函数是哪个?谢
怎样才能得到GDI+的内存地址?
Gdiplus::Bitmap tmp("a.bmp");rnrn比如我想得到tmp的第一行,第一个象素的内存地址,等等rn我找便了csdn都没发现rnrnGdiplus::Graphics *gdc3=new Gdiplus::Graphics(tmp);rnHDC hdc=gdcc->GetHDC();rn似乎这样可以取得tmp的dc,但接下去就不知道该怎样做了rn用GetObject可以吗?rnrn我的最终目的是直接对tmp在内存的数据处理,因为setpixel实在太慢了rnrn能给出完整算法吗?rnrn这样吧,有一幅32位的位图以Gdiplus::Bitmap方式在内存里rn要把其中的红色都替换成兰色rn只能用改内存中数值的方法实现。
泛型的读取每次都是最新的一个 为什么
[code=csharp]rn private List> pic = new List>();rnrn private void btnSavePic_Click(object sender, EventArgs e)rn rn int i = count;rnrn Image frame = new Image(400, 200);rn frame = _capture.RetrieveBgrFrame();rn pic.Add(frame);rnrn savedImageBox.Image = frame; //保存下当前的图像rn Bitmap bit = savedImageBox.Image.Bitmap;rn Image image = MakeThumbnail(bit, 80, 80);rn this.imageList1.Images.Add(image);rn this.imagelistView.Items.Add(count++ + "", i - 1);rn rn private void listView1_SelectedIndexChanged(object sender, EventArgs e)rn rn if (this.imagelistView.SelectedItems.Count > 0)rn rn savedImageBox.Image = pic[(this.imagelistView.SelectedItems[0].Index)];rn rn rn[/code]rn随便点listview的任一项,savedImageBox的图片都只显示了最新存下来的那个pic。我知道肯定是泛型的add方法那有问题。但对frame我不也已经是new了嘛 为什么
为什么每次ReadFile后, GetLastError()都是ERROR_NOACCESS?
用WIN32 API写一个串口读写的程序,rn采用 OVERLAPPED 方式, rn为read port单独开一个线程, 如果有 EV_RXCHAR 发生rn就调用ReadOver(hComm, lpBuf, &dwRead)函数rnrnReadOver函数如下:rnBOOL ReadOver(HANDLE hComm, char *lpBuf, DWORD *lpRead)rnrn rn OVERLAPPED osReader = 0;rn BOOL bReadStatus = TRUE;rnrn DWORD ErrorResult ;rn *lpRead = 1 ;rn const DWORD READ_BUFFER_SIZE = 1 ;rnrn // Create the overlapped event. Must be closed before exitingrn // to avoid a handle leak.rn osReader.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);rnrn if (osReader.hEvent == NULL)rn // Error creating overlapped event; abort.rn return 0; rnrn // Issue read operation.rn bReadStatus = ReadFile(hComm, lpBuf, READ_BUFFER_SIZE, lpRead, &osReader);rn if (!bReadStatus)rn ErrorResult = GetLastError();rn if (ErrorResult == ERROR_IO_PENDING)rn WaitForSingleObject(osReader.hEvent, 1000);rn return 1 ;rn else rn return 0 ;rn rn else rn return 0;rn ;rn // immediately readrn return 1;rnrnrn为了便于调试, 我将串口的RXD和TXD短接rn敲键向串口发送字符"X"rn每次都能收到 EV_RXCHAR 事件rn但一调用ReadOver, rn在ReadFile后, GetLastError() 返回值都是998L,rn查阅MSDN, 发现998对应的宏如下;rn998 Invalid access to memory location. ERROR_NOACCESS rnrn为什么, 每次都是这个错误, rn更请高手指点指点
为什么我每次都是问的初级问题
public class Calc rnpublic static void main (String args []) rnint total = 0; rnfor (int i = 0, j = 10; total > 30; ++i, --j) rnSystem.out.println(" i = " + i + " : j = " + j); rntotal += (i + j); rn rnSystem.out.println("Total " + total); rn rn rnrn为什么for循环中没有打印出来???只有rntotal=0;rntotal的确是0我懂rn
在固定的内存地址 执行构造函数
如果是一个struct 很简单, 我们可以随便new 一个sizeof(struct a) 的内存, 然后 直接memset 0 , 然后赋值。rnrn最后将这个内存地址传来传去 ,最后delete [] 就好了。rnrn但是假设, 我希望在我一个new 出来 sizeof(class(a))*100 的地方放10个class a 应该怎么做?rnrna:a(ptr, x,x,x,); 我看到primer 里面的伪代码是这么些的rn而且a 内存可能还有其他的new 操作。 如何做事正道?
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法