内联函数
code.h
#ifndef DLL_API
#define DLL_API _declspec(dllimport)
#endifclass DLL_API test
{
inline void t()
{
//do......
}
}code.cpp#define DLL_API _declspec(dllexport)
#include "code.h"在code.h定义内联函数编译时有无法找到符号错误!1我写一个DLL。但是在头文件中不能加内联啊?有什么办法?
另外。我要在一个线程中调用一个类的实例方法
所以我定义了一个结构
typedef struct
{
test*test_obj;//传指针过去
HANDLE completion_port;//完成端口句柄
}WORK_THREAD_PARAM,*LPWORK_THREAD_PARAM;
然后在test类的一个方法中LPWORK_THREAD_PARAM workThreadParam=new WORK_THREAD_PARAM();//这里的内存在线程中如何释放?不能不能new啊。这个方法退出后线程才开始。如果不new刚线程无法得到值。但在线程中不能delete 。因为会让test * test_obj为空。但在线程中那个NEW出来的东西用不着了啊。!
workThreadParam->completion_port=hCompletionPort;
workThreadParam->>test_obj=this;DWORD WINAPI test::WorkThread(LPVOID lpParameter)
{
LPWORK_THREAD_PARAM workParam=(LPWORK_THREAD_PARAM)lpParameter;
HANDLE hCompletion=workParam->completion_port;
test*test_obj;=workParam->test_obj;
//下边就可以调用了。但如果delete的话刚不行
test_obj->(实例方法)}
问题一:如何在dll项目中定义内联函数
问题二:怎样释放那个new出来的内存啊?
code.h
#ifndef DLL_API
#define DLL_API _declspec(dllimport)
#endifclass DLL_API test
{
inline void t()
{
//do......
}
}code.cpp#define DLL_API _declspec(dllexport)
#include "code.h"在code.h定义内联函数编译时有无法找到符号错误!1我写一个DLL。但是在头文件中不能加内联啊?有什么办法?
另外。我要在一个线程中调用一个类的实例方法
所以我定义了一个结构
typedef struct
{
test*test_obj;//传指针过去
HANDLE completion_port;//完成端口句柄
}WORK_THREAD_PARAM,*LPWORK_THREAD_PARAM;
然后在test类的一个方法中LPWORK_THREAD_PARAM workThreadParam=new WORK_THREAD_PARAM();//这里的内存在线程中如何释放?不能不能new啊。这个方法退出后线程才开始。如果不new刚线程无法得到值。但在线程中不能delete 。因为会让test * test_obj为空。但在线程中那个NEW出来的东西用不着了啊。!
workThreadParam->completion_port=hCompletionPort;
workThreadParam->>test_obj=this;DWORD WINAPI test::WorkThread(LPVOID lpParameter)
{
LPWORK_THREAD_PARAM workParam=(LPWORK_THREAD_PARAM)lpParameter;
HANDLE hCompletion=workParam->completion_port;
test*test_obj;=workParam->test_obj;
//下边就可以调用了。但如果delete的话刚不行
test_obj->(实例方法)}
问题一:如何在dll项目中定义内联函数
问题二:怎样释放那个new出来的内存啊?
A线程new data; //data引用计数为1
对data增加引用计数 //data引用计数为2
放到B线程可以取到的存储区 //data引用计数为2
A线程释放data一个引用计数 //data引用计数为1B线程取得data //data引用计数为1或者2(如果在A释放之前),其中有一个引用计数是A交给B管理的,所以无论何时至少有一个引用计数
B线程处理data //data引用计数为1(假设)
B线程释放data一个引用计数 //data引用计数为0(假设),回收
2、new一个结构传给线程,在线程内delete,这是非常常见的做法,有何不行?