OS:windows7 32bit
g++ 4.5.2下编译正常,无错。vs2010下出问题stack around variable 'ac' is corruptted
bool
Connection::getAutocommit()
{
SQLSMALLINT ac = 0;
SQLRETURN ret = m_handle->getAttribute(
SQL_ATTR_AUTOCOMMIT,
ac);
m_handle->checkError(ret);
return ac == SQL_AUTOCOMMIT_ON;
}
查看了一些贴子,大多是关于内存越界访问的问题。但这个函数从正常的角度是看不出任何越界行为的。
无意当中将 ac的类型改为 SQLUINTEGER ,问题就自动消失了。
推测为ODBC驱动中,将SQL_ATTR_AUTOCOMMIT这个属性的值类型已经写死为SQLUINTEGER。所以,即使已经将ac指定为SQLSMALLINT也不能改变此属性所占据的内存大小。所以这个问题其实是odbc引发的访问超出了ac大小的界限。
在本机上
SQLSMALLINT 的实际类型为 short
SQLUINTEGER的实际类型为 unsigned long
而且ac正好是分配在栈上的。的确符合提示中的stack
//更改之后的代码
bool
Connection::getAutocommit()
{
SQLUINTEGER ac = 0;
SQLRETURN ret = m_handle->getAttribute(
SQL_ATTR_AUTOCOMMIT,
ac);
m_handle->checkError(ret);
return ac == SQL_AUTOCOMMIT_ON;
}
注:
m_handle->getAttribute 对不同类型都有相应的重载,而不会发生中间的类型自动转换过程。
分享到:
相关推荐
书中还涵盖了React的一些基础知识,比如如何创建应用程序的第一个交互——“React the vote”,以及如何通过props(属性)来传递数据和使用JSX(JavaScript XML)来编写更加清晰和易于理解的代码。此外,读者将会...
Determining the required stack sizes for a software project is a crucial part of the development process. The developer aims to create a stable application, while not wasting resources. This ...
本篇将详细解释如何使用两个栈(stack)来模拟实现一个队列(queue)的功能。 首先,我们要理解栈和队列的基本特性。栈是一种后进先出(LIFO,Last In First Out)的数据结构,其操作主要包括压入(push)和弹出...
You will learn what you need to know to work professionally with Fullstack Vue: The Complete Guide to Vue.js You’ll build: A Server-Persisted Shopping Cart: Use the Flux-like library Vuex to manage...
压缩包内的文件名为`STACK1_SEGMENT_STACK.doc`,这可能是一个文档,详细介绍了如何在汇编语言中设置和使用栈段,以及可能包含了一些关于进制转换的实例代码。文档可能涵盖以下知识点: 1. **栈的基本操作**:压栈...
C语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 ...
“The Full Stack Developer Your Essential Guide to the Everyday Skills Expected of a Modern Full Stack Web Developer” Excerpt From: Chris Northwood. “The Full Stack Developer.” iBooks.
该文档来自2013中国大数据技术大会上Apache HBase项目管理委员会主席Michael Stack的主题演讲。
包括: Design and Implementation of the lwIP TCP_IP Stack.pdf TCP/IP 协议栈 LwIP 的设计与实现.pdf
If you’d like to report any bugs, typos, or suggestions just email us at: react@fullstack.io1. Chat With The Community! There’s an unofficial community chat room for this book using Gitter. If you’...
smashing the stack for fun and profit翻译
If you’d like to report any bugs, typos, or suggestions just email us at: react@fullstack.io1. Chat With The Community! There’s an unofficial community chat room for this book using Gitter. If you’...
StackDocklet是一款面向开发者和IT专业人士的工具,它允许用户在桌面上创建一个浮动的快捷方式堆栈,方便地管理和启动常用的应用程序、文件或目录。这个压缩包“StackDocklet.zip”包含了StackDocklet的主要组件和...
UDP 协议栈 IP。V1.3 - ARP timeout and ability to ... was received on the broadcast address. V1.1 - Added mac_tx_tfirst output to assist coupling to MAC layers that require a start of frame indication.
该书在2018年初版的基础上,不断修改增补,2021年更新为Vue 3.x,主要介绍Single-file components、Custom Events、Vuex and Server、Form Handling、Routing、Composition API、GraphQL等。共625页,内容详细全面,...
Keil RTX v5 kernel functions are executed in handler mode (using PendSV/SysTick/SVC) and the tables below lists the maximum stack requirements for the Main Stack (MSP) that the user should consider. ...