【发布时间】:2014-11-22 19:06:23
【问题描述】:
SOCKET 来自winsock.h
声明为
SOCKET BillerSocket;
据我所知SOCKET已经是变相的指针,所以我不应该做free(*BillerSocket);。
我malloc它与
BillerSocket = malloc(sizeof(SOCKET));
我收到此警告
[警告] 赋值使指针变成整数而不进行强制转换[默认启用]
当我free一个 SOCKET 时
free(BillerSocket);
我收到一条警告和一条注释,似乎告诉我必须做什么。
[警告] 传递 'free' 的参数 1 使指针来自整数而不进行强制转换[默认启用]
129 0 c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\combaseapi.h In file included from c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\combaseapi.h
14 c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\objbase.h from c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\objbase.h
17 c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\ole2.h from c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\ole2.h
12 c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\wtypes.h from c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\wtypes.h
10 c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\winscard.h from c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\winscard.h
97 c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\windows.h from c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\windows.h
1 main.c
from main.c
438 16 c:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\include\stdlib.h
[注意] 预期为“void *”,但参数为“SOCKET”类型
如何删除警告?
【问题讨论】:
-
你不用malloc和free,你用
socket()和closesocket()。 -
另外,
SOCKET不是指针。 -
哦,谢谢,我从来没有使用过 C/C++ 只是来使用它,我想清除警告,感谢提示,我将删除
malloc和free。如果你愿意,你可以写一个答案,我会接受,或者我可以删除问题,但它可能会帮助一些人。