Articles of 指针

初始化C中地址为零的variables

这可能是一个非常基本的问题。 我知道有一个C约定将空指针的值设置为零。 是否有可能为Windows中的新variables分配空间,并且分配空间的地址恰好为零? 如果不是,通常占用那个地址区域?

奇怪的行为:指针数与私有字节数

我正在32位Windows(Windows XP)上编写服务器组件。 我在代码中有大量的分配,解除分配和重新分配。 我保持这个组件运行几个小时,然后把它closures。 我发现很多内存(私人字节)仍然分配给进程(我使用SysInternals进程资源pipe理器来监视私人字节) 代码中肯定没有内存泄漏。 所以我进一步调查,并提出了这段代码,再现了完全相同的行为。 #define NUMBER_OF_POINTERS 1000 int _tmain(int argc, _TCHAR* argv[]) { char* ptr[NUMBER_OF_POINTERS] = {} ; int len[NUMBER_OF_POINTERS]={}; printf("\nCheck private bytes now and press a key to go on realloc"); _getch(); printf("\nRandomly allocating/reallocating memory. Press x to stop…"); while(1) { int random_kilobytes = rand() % 7 + 1; int randomindex […]

代码在Windows中工作,但不在Linux中! 为什么?

这是一个运输问题的工作代码片段(删除了实际的function,只有input和输出function在这里,顺便说一下,这是不正确的) # include <stdio.h> # include <stdlib.h> typedef struct transport { int cost; int alloc; }TRAN; void problem_input (TRAN **, int *, int *, int, int); void problem_display (TRAN **, int *, int *, int, int); int main() { int n_dest; int n_org; int i; int j; printf("\n\n\tEnter Number Of Destinations : "); scanf("%d", &n_dest); […]

为什么系统在使用指针Windows时分配更多内存?

我使用HeapAlloc分配大量的内存,如400 MB,但是当我检查我的程序的内存使用情况,它真的使用像1 GB。 //configuraciones.h #define ANCHO_MUNDO 5000 #define ALTO_MUNDO 5000 //unidades.cpp unidad* unidades_memoria = (unidad*)HeapAlloc(heap, //User Heap NULL,ANCHO_MUNDO*ALTO_MUNDO*sizeof unidad); unidad*** unidades = new unidad**[ANCHO_MUNDO]; //Default Heap for(int i = 0; i < ANCHO_MUNDO;i++) unidades[i] = new unidad*[ALTO_MUNDO]; unidad* actual = unidades_memoria; unsigned int id = 0; 我打开了我的程序,我意识到当执行这段代码时,内存使用会增加 for (int y = 0; y < ALTO_MUNDO;y++) […]

我如何使用基地址来获得dynamic?

所以,我一直在努力从一个dynamic地址获得价值一段时间,结果是这个https://gyazo.com/82ef5920d01c4452840764111c60e046当事实上我的健康值是​​100, 这是我试图做到目前为止,我试图读取基地址存储在一个临时温度然后读取temp + HealthOffset再次temp,然后我会读取temp到一个整数,并尝试打印它。 当我尝试写入写入它也不起作用 #include <Windows.h> #include <iostream > #define base 0x0050f4f4 using namespace std; int main() { DWORD healthoffset[] = { 0xF8 }; HWND hWnd = FindWindow(NULL, "AssaultCube"); DWORD iProc = GetWindowThreadProcessId(hWnd, 0); HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, iProc); DWORD temp; int storage; ReadProcessMemory(hProc, (LPCVOID)base, &temp, sizeof(temp), 0); ReadProcessMemory(hProc, (LPCVOID)(temp + healthoffset[1]), &temp, […]

如何在我们的应用程序之外控制鼠标指针

我想用我的应用程序控制鼠标指针,并能够使用我的程序与其他程序交互,例如,我希望我的应用程序能够点击另一个应用程序上的button 我应该如何解决这个问题呢? (任何编程语言都可以工作,如果您有任何build议,请让我知道) 事后思考:我想在Windows操作系统上做,并想testing我的GUI,看看它是否在不同的情况下工作。 任何语言都适合我,因为这不是最终产品的一部分,但我更喜欢这些语言之一(Python,Java,C#或MATLAB) 谢谢

从CArray指针访问值

我有一个具有CArray对象的类,我需要从这个CArray获取值到另一个类,但是到目前为止还没有这样做。 class CTempGridClass: public CTableCtrl { public: CArray<CArray<float,float>, CArray<float,float>&> *m_row2; }; class CCorePassageAreasPage : public CDialog { DECLARE_DYNCREATE(CCorePassageAreasPage) public: enum { IDD = IDD_CORE_PASSAGE_AREA }; CArray<CArray<float,float>, CArray<float,float>&> m_row; CTempGridClass Grid; }; BOOL CCorePassageAreasPage::OnSetActive() { Grid.m_row2 = &m_row; } 我如何访问m_row2值? 我试过了 float x = m_row2[0][1]; 但是这给出了一个“初始化”:不能从'CArray'转换为'float'“错误。 我可以没有任何错误地做上面的任务m_row。 我知道我可以通过使用vector来避免这种情况,但是'CCorePassageAreasPage'是由其他人创build的,我不想改变它。

仍然不明白指向C中数组的数组的指针

正如标题所说,我很密集。 我试图在堆上分配空间来存储uint64_t数组的值。 (它可以是任何types的数字,但这是我用来区分价值观和指针)我在这里得到了我的一个问题的答案。 我想我明白。 我想要做的是获取一个指向数组数组的指针,然后在运行时为数组赋值。 编辑:美国东部时间下午12:15更新。 为了节省读者,我在下面留下了原来的问题,并根据评论和回答将问题缩小到以下内容。 这是我的C代码: #include "stdafx.h" #include <stdlib.h> #include <stdint.h> #define NBRPTR 3 int main() { uint64_t (*LngArr3)[NBRPTR]; // pointer to array of 3 uint64_t uint64_t s; // subscript // WHen the next line of code is not commented, I get the following message: // Error C2440 '=': cannot convert from […]

如何检查指针在Python中是否为空?

我需要处理一个指针,通过callback来获取它的值。 这是有问题的,因为在第一次调用期间这个指针是空的。 所以做一个pointer.contents不ValueError:空指针访问 。 为了避免这种情况,如何检查指针是否为空?

运行时检测内存删除

代码: int *ptr = new int[10]; int *q = ptr; delete q; 工作正常没有任何问题(没有运行时错误)。 但是,下面的代码: int *ptr = new int[10]; int *q = ptr; q++; delete q; 导致运行时错误。 我正在使用Microsoft Visual Studio-8和Win-7作为平台。 我无法弄清楚为什么在第二种情况下会出现运行时错误?