実験してみました。
#include
#include
#include
/*bcc用*/
#pragma comment(lib, "comdlg32.lib")
/*
gccでは
コマンドラインオプションに
-lcomdlg32
を付けてコンパイルすべし
*/
#define malloc2(s) HeapAlloc(GetProcessHeap(),0,(s))
#define calloc2(s) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s))
#define realloc2(p,s) HeapReAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(p),(s))
#define free2(p) HeapFree(GetProcessHeap(),0,(p))
int forqsort(const void* x,const void* y) {
if(*((int*)x)>*((int*)y))return 1;
if(*((int*)x)lStructSize=sizeof(OPENFILENAME);
pofn->hwndOwner=0;
pofn->lpstrFilter="テキスト(*.txt)\0*.txt\0すべてのファイル(*.*)\0*.*\0\0";
pofn->nFilterIndex=1;
pofn->lpstrFile=buf4;
pofn->nMaxFile=10000;
pofn->Flags=OFN_HIDEREADONLY | OFN_NOCHANGEDIR |
OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
pofn->lpstrDefExt="txt";
if(!GetSaveFileName(pofn)) {
MessageBox(0,"GetSaveFileNameエラー","エラー",
MB_OK | MB_ICONWARNING | MB_TOPMOST);
} else {
fp=CreateFile(buf4,GENERIC_WRITE,0,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if(fp==INVALID_HANDLE_VALUE) {
MessageBox(0,"ファイルが開けません",buf4,
MB_OK | MB_ICONWARNING | MB_TOPMOST);
} else {
WriteFile(fp,buf3,lstrlen(buf3),&written,NULL);
CloseHandle(fp);
}
}
free(buf);
free(buf2);
free(buf3);
free(buf4);
free(pofn);
/*HeapAlloc対標準関数*/
buf=malloc2(10000);
buf2=malloc2(10000);
buf3=malloc2(10000);
buf5=malloc2(sizeof(int)*10);
strcpy(buf,"実験");
strcat(buf,"テスト");
strcpy(buf2,"testzikken");
printf("「%s」の長さは%d\n",buf,strlen(buf));
printf("「%s」の長さは%d\n",buf2,strlen(buf2));
printf("strcmp(%s,%s)==%d\n",buf,buf2,strcmp(buf,buf2));
printf("%sから'z'をさがすと%d\n",buf2,(int)(strchr(buf2,'z')-buf2));
printf("%sから\"kk\"をさがすと%d\n",buf2,(int)(strstr(buf2,"kk")-buf2));
printf("文字列を入力してください。\n>");
fgets(buf3,10000,stdin);
printf("入力:%s",buf3);
buf5[0]=100;
buf5[1]=1230;
buf5[2]=23;
buf5[3]=545;
buf5[4]=922;
buf5[5]=33;
buf5[6]=1;
buf5[7]=531;
buf5[8]=331;
buf5[9]=999;
buf5[10]=321;
qsort(buf5,10,sizeof(int),forqsort);
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
buf5[0],buf5[1],buf5[2],buf5[3],buf5[4],
buf5[5],buf5[6],buf5[7],buf5[8],buf5[9]);
free2(buf);
free2(buf2);
free2(buf3);
free2(buf5);
return 0;
}
このコードでは不都合は発見できませんでした。
しかし、不都合が起きる可能性は否定できません。
使用の際は注意してください。
ということになります。
冒頭の噂自体覚え違いかも...