【发布时间】:2011-10-06 18:40:48
【问题描述】:
我收到一个奇怪的错误,抱怨我假设的堆栈损坏,我已经对其进行了一些调试,但我还没有发现问题所在。我似乎也无法在 Visual Studio 2010 中实现 nothrow!
XYZ::XYZ(char * d)
{
hostname = new char[HOSTNAME_LENGTH];
ip = new char[IP_ADDR_LENGTH];
/*Dynamic Memory*/
memset(hostname, 0, HOSTNAME_LENGTH);
memset(ip, 0, IP_ADDR_LENGTH);
//strncpy(hostname, d, HOSTNAME_LENGTH);
if(dWSAStartup(MAKEWORD(2,2), &wsd) == 0) //Crashes Here!
//And so on..
dWSAStartup 从 ws2_32.dll 动态链接并具有正确的函数参数类型转换:
typedef int (*WSAS)(WORD, LPWSADATA); //WSAStartup
不,FreeLibrary 函数还没有被调用——所以函数指针是有效的!
这个错误是唯一阻止我的东西!有没有人给我指点?
【问题讨论】:
-
对
std::string过敏?wsd是什么?这些动态char缓冲区与您的问题有什么关系?WSAS是从哪里来的?我会拿出我的 ESP。 -
可悲的是,我是。我把它包括在内是因为我知道如果我不展示它就会有人抱怨。这是一个动态链接的函数,所以 WSAS 是指向内存内部函数的指针。
-
您可以尝试重新构建您的应用程序,这种巫术有时会有所帮助。
-
@Saustin:为什么?为什么你忽略了我的其他问题?
-
它被称为重叠响应 :) 不同的程序员有不同的习惯——问题不是我不使用 std::string,而是我遇到了运行时错误。我已经重建了应用程序,没有骰子。