簡體   English   中英

C ++指針,無法讀取內存

[英]C++ Pointers, Unable To Read Memory

為什么,當我初始化指針時,我可以讀取分配的值:

DWORD *pBytesReturned = new DWORD[0];
_result =  EnumProcesses(pProcessIds, 1000, pBytesReturned);

在此處輸入圖片說明

但是當我這樣初始化它時,我無法讀取分配的值:

DWORD *pBytesReturned = 0;
_result =  EnumProcesses(pProcessIds, 1000, pBytesReturned);

在此處輸入圖片說明

如果需要,這是完整的代碼:

#include "stdafx.h"
#include <Psapi.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
{
    bool _result;
    DWORD *pProcessIds = new DWORD[1000];
    DWORD cb;
    DWORD *pBytesReturned =0;
    _result =  EnumProcesses(pProcessIds, 1000, pBytesReturned);
}

功能的意圖

BOOL
WINAPI
EnumProcesses (
    _Out_writes_bytes_(cb) DWORD * lpidProcess,
    _In_ DWORD cb,
    _Out_ LPDWORD lpcbNeeded
    );

將指針作為第三個參數,並且該指針必須指向函數將在其中存儲雙字的有效內存位置。 預期的函數調用應如下所示

DWORD *pProcessIds = new DWORD[1000];
DWORD bytesReturned = 0;
bool _result = EnumProcesses(pProcessIds, 1000, &bytesReturned);

或像這樣

DWORD *pProcessIds = new DWORD[1000];
DWORD *pBytesReturned = new DWORD[1];
bool _result = EnumProcesses(pProcessIds, 1000, pBytesReturned);

但您不應該使用NULL指針,並且希望調試器取消引用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM