Как динамически распределить структуру и ее массив членов TCHAR с помощью calloc? - PullRequest
0 голосов
/ 27 июля 2011

Я могу достаточно легко настроить структуру в стеке:

struct sArray
{
TCHAR sName[512];
};
struct sArray sKeys[2048] = {0};

Но это использует слишком много места в стеке.

Вместо этого я хочу поместить все это в кучу, поэтому я придумал это:

struct sArray
{
    TCHAR *sName;
};
struct sArray *sKeys = (sArray *) calloc(2048, sizeof(sArray));

Как динамически выделить память для sName? Я попробовал это, и он не компилируется:

TCHAR *sKeys[0].sName = (TCHAR *) calloc(512,sizeof(TCHAR));

Я действительно что-то здесь упускаю. Может кто-нибудь помочь? Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 августа 2013

Попробуйте:

#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
#include <Psapi.h>
#include <strsafe.h>
#include <cstring>

typedef struct MyData {
    TCHAR processPath[ 32 ];
} MYDATA, *PMYDATA;

int main()
{
    PMYDATA pData = (PMYDATA) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(MYDATA));
    strcpy(pData->processPath, TEXT ("C:\\Windows\\System32\\notepad.exe")); 
}

Я использовал эту команду для компиляции:

"C:\MinGW64\bin\g++.exe" -o ThreadExample.exe ThreadExample.cpp -lpsapi
0 голосов
/ 27 июля 2011

Просто используйте

sKeys[0].sName = (TCHAR *) calloc(512,sizeof(TCHAR));

(без TCHAR * спереди)

...